I wanted to create a Java based clock which can show timings of London and Newyork. I got stuck at the point of handling DayLight savings. Searched over Google and found out that Java on its own is not handling DayLight Savings.
For ex:
Calendar londonCal = Calendar.getInstance(TimeZone.getTimeZone("Europe/London"));
String londonTime = londonCal.get(Calendar.HOUR_OF_DAY)+":"+londonCal.get(Calendar.MINUTE)+":"+londonCal.get(Calendar.SECOND);
Calendar newyorkCal = Calendar.getInstance(TimeZone.getTimeZone("US/Central"));
String newyorkTime = newyorkCal.get(Calendar.HOUR_OF_DAY)+":"+newyorkCal.get(Calendar.MINUTE)+":"+newyorkCal.get(Calendar.SECOND);
System.out.println("London: "+londonTime+"\nNewYork: "+newyorkTime);
I thought the above code would have handled DayLight savings but to my surprise i got below result in console:
London: 12:23:17
Newyork: 6:23:17
stating diff in time to be:6 hours
wherein currently its daylight savings so it should have been 5 hours and i should have got a result of
London: 12:23:17
Newyork: 7:23:17
hmm either i am not finding a way to get java calendar handle daylight saving or there isnt one which does tht?
Monday, May 11, 2009
Subscribe to:
Post Comments (Atom)
1 comment:
Well well, Just found out that yes Java TimeZone supports DayLight saving as well, it was a mistake in my Timezone parameter, i tried below code and it gave data as expected:
Calendar londonCal = Calendar.getInstance(TimeZone.getTimeZone("Europe/London"));
String londonTime = londonCal.get(Calendar.HOUR_OF_DAY)+":"+londonCal.get(Calendar.MINUTE)+":"+londonCal.get(Calendar.SECOND);
Calendar losAngelesCal = Calendar.getInstance(TimeZone.getTimeZone("America/Los_Angeles"));
String losAngelesTime = losAngelesCal.get(Calendar.HOUR_OF_DAY)+":"+losAngelesCal.get(Calendar.MINUTE)+":"+losAngelesCal.get(Calendar.SECOND);
Calendar dubaiCal = Calendar.getInstance(TimeZone.getTimeZone("Asia/Dubai"));
String dubaiTime = dubaiCal.get(Calendar.HOUR_OF_DAY)+":"+dubaiCal.get(Calendar.MINUTE)+":"+dubaiCal.get(Calendar.SECOND);
Calendar kolkattaCal = Calendar.getInstance(TimeZone.getTimeZone("Asia/Kolkata"));
String kolkattaTime = kolkattaCal.get(Calendar.HOUR_OF_DAY)+":"+kolkattaCal.get(Calendar.MINUTE)+":"+kolkattaCal.get(Calendar.SECOND);
System.out.println("LosAngeles: "+losAngelesTime+"\nLondon: "+londonTime+"\nDubai:"+dubaiTime+"\nKolkatta:"+kolkattaTime);
Console output:
LosAngeles: 5:36:43
London: 13:36:43
Dubai:16:36:43
Kolkatta:18:6:43
Post a Comment