title: How to change TIMEZONE for a java.util.Calendar/Date
body: <p>I would like to change the TIMEZONE value in a Java Calendar instance at runtime.
  I tried below. But the output is the same in both instances:</p>
  
  <pre><code>    Calendar cSchedStartCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
      System.out.println(cSchedStartCal.getTime().getTime());
      cSchedStartCal.setTimeZone(TimeZone.getTimeZone("Asia/Calcutta"));
      System.out.println(cSchedStartCal.getTime().getTime());
  </code></pre>
  
  <p>OUTPUT:<BR> 
  1353402486773 <BR>
  1353402486773</p>
  
  <p>I have tried this also but the output is still the same:</p>
  
  <pre><code>    Calendar cSchedStartCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
      System.out.println(cSchedStartCal.getTime());
  
      Calendar cSchedStartCal1 = Calendar.getInstance(TimeZone.getTimeZone("Asia/Calcutta"));
      cSchedStartCal1.setTime(cSchedStartCal.getTime());
      System.out.println(cSchedStartCal.getTime());
  </code></pre>
  
  <p>In the API I am seeing the below comment but I am not able to understand much of it:</p>
  
  <pre><code>     * calls: cal.setTimeZone(EST); cal.set(HOUR, 1); cal.setTimeZone(PST).
       * Is cal set to 1 o'clock EST or 1 o'clock PST?  Answer: PST.  More
       * generally, a call to setTimeZone() affects calls to set() BEFORE AND
       * AFTER it up to the next call to complete().
  </code></pre>
  
  <p>Could you please help me?</p>
  
  <p><B>One Possible Solution : </B></p>
  
  <pre><code>    Calendar cSchedStartCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
      long gmtTime = cSchedStartCal.getTime().getTime();
  
      long timezoneAlteredTime = gmtTime + TimeZone.getTimeZone("Asia/Calcutta").getRawOffset();
      Calendar cSchedStartCal1 = Calendar.getInstance(TimeZone.getTimeZone("Asia/Calcutta"));
      cSchedStartCal1.setTimeInMillis(timezoneAlteredTime);
  </code></pre>
  
  <p>Is this solution ok?</p>