title: Timezone issue in Android
body: <p>I have time in milliseconds and I am displaying that time in my application in <code>"MM/dd/yyyy HH:mm:ss"</code> format, it is working fine.</p>
  
  <p><strong>Problem</strong>: if I change the timezone in android device it display different time in my application may be because of some timezone calculation. I want to display same time that is in my database as it is in any timezone.</p>
  
  <p><strong>I am using below code to test timezone issue</strong></p>
  
  <pre><code>Locale locale = new Locale("en", "IN");
  
  TimeZone tz = TimeZone.getDefault();
  System.out.println("Default timezon id :: " + tz.getID());
  tz.setID("Asia/Calcutta");
  String timezon = tz.getDisplayName(false, TimeZone.SHORT, locale);
  System.out.println("Timezon id :: " + tz.getID() + " Timezon name :: " + timezon);
  Calendar cal = Calendar.getInstance(tz, locale);
  
  System.out.println("TImezon :: " + tz);
  // "1319084400775" is the milliseconds of 10/20/2011 05:20:00 in MM/dd/yyyy HH:mm:ss format 
  Date date = new Date(Long.parseLong("1319084400775"));
  System.out.println("Date :: " + date.toGMTString());
  SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", locale);
  
  System.out.println("Start date :: " + format.format(date));
  // "1319084400775" is the milliseconds of 10/20/2011 05:20:00 in MM/dd/yyyy HH:mm:ss format 
  cal.setTimeInMillis(Long.parseLong("1319084400775"));
  
  timezon = cal.getTimeZone().getDisplayName(false, TimeZone.SHORT, locale);
  System.out.println("Calender's timezon :: " + timezon);
  System.out.println("Start date :: yyyy-mm-dd hh:mm:ss " + cal.get(Calendar.YEAR) + "-" + cal.get(Calendar.MONTH) + "-" + cal.get(Calendar.DAY_OF_MONTH) + " " + cal.get(Calendar.HOUR_OF_DAY) + ":" + cal.get(Calendar.MINUTE));
  // "1319084700776" is the milliseconds of 10/20/2011 05:25:00 in MM/dd/yyyy HH:mm:ss format 
  cal.setTimeInMillis(Long.parseLong("1319084700776"));
  System.out.println("End date :: " + cal.getTime());
  </code></pre>
  
  <p><strong>Output ::</strong> </p>
  
  <p><strong>If I set timezone for "Pacific/Fiji";</strong></p>
  
  <pre><code>10-07 17:03:40.392: INFO/System.out(1193): Default timezon id :: Pacific/Fiji
  10-07 17:03:40.392: INFO/System.out(1193): Timezon id :: Asia/Calcutta Timezon name :: GMT+05:30
  10-07 17:03:40.406: INFO/System.out(1193): TImezon :: org.apache.harmony.luni.internal.util.ZoneInfo@7b42d3a7
  10-07 17:03:40.422: INFO/System.out(1193): Date :: 20 Oct 2011 04:20:00 GMT
  10-07 17:03:40.442: INFO/System.out(1193): Start date :: 2011-10-20 16:20:00
  10-07 17:03:40.442: INFO/System.out(1193): Calender's timezon :: GMT+05:30
  10-07 17:03:40.442: INFO/System.out(1193): Start date :: yyyy-mm-dd hh:mm:ss 2011-9-20 16:20
  10-07 17:03:40.452: INFO/System.out(1193): End date :: Thu Oct 20 16:25:00 Pacific/Fiji 2011
  </code></pre>
  
  <p><strong>If I set timezone for "America/Tijuana";</strong></p>
  
  <pre><code>10-06 22:05:20.702: INFO/System.out(1193): Default timezon id :: America/Tijuana
  10-06 22:05:20.712: INFO/System.out(1193): Timezon id :: Asia/Calcutta Timezon name :: GMT+05:30
  10-06 22:05:20.712: INFO/System.out(1193): TImezon :: org.apache.harmony.luni.internal.util.ZoneInfo@1294e658
  10-06 22:05:20.733: INFO/System.out(1193): Date :: 20 Oct 2011 04:20:00 GMT
  10-06 22:05:20.742: INFO/System.out(1193): Start date :: 2011-10-19 21:20:00
  10-06 22:05:20.742: INFO/System.out(1193): Calender's timezon :: GMT+05:30
  10-06 22:05:20.752: INFO/System.out(1193): Start date :: yyyy-mm-dd hh:mm:ss 2011-9-19 21:20
  10-06 22:05:20.752: INFO/System.out(1193): End date :: Wed Oct 19 21:25:00 America/Tijuana 2011
  </code></pre>
  
  <p><strong>EDIT</strong></p>
  
  <p><strong>I have time in milliseconds now I am displaying that milliseconds in date format in my application but issue is when I changed timezone in device I get date according to that timezone.</strong></p>