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