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