Monday, 15 April 2013

java - Calendar instance not working -



java - Calendar instance not working -

trying print time in different time zones using gregoriancalendar using code below not work. ideas why?

gregoriancalendar.getinstance(timezone.gettimezone("pst")).gettime(). prints time per timezone , not @ pst.

by design java.util.date initialized utc milliseconds since epoch , hence not take timezones account. next code generate :

calendar pstcalendar = gregoriancalendar.getinstance(timezone.gettimezone("pst")); calendar defcalendar = gregoriancalendar.getinstance(timezone.getdefault()); // same values here : system.out.println(pstcalendar.gettime()); system.out.println(defcalendar.gettime()); // different values here : system.out.println(pstcalendar.get(calendar.hour_of_day)); system.out.println(defcalendar.get(calendar.hour_of_day));

a solution not utilize gettime method straight take calendar.zone_offset business relationship , take diff before converting date object:

date d = new date(); // default time : system.out.println(d); d.settime(d.gettime() + pstcalendar.get(calendar.zone_offset)); // time after applying offset system.out.println(d);

java gregorian-calendar

No comments:

Post a Comment