Note that there are some explanatory texts on larger screens.

plurals
  1. POTimezone issue in Android
    text
    copied!<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>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload