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?
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:
ReplyDeleteCalendar 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