Java 不同时区的SameTime
为什么程序以不同的时区打印相同的输出/时间Java 不同时区的SameTime,java,jodatime,Java,Jodatime,为什么程序以不同的时区打印相同的输出/时间 Calendar cal = GregorianCalendar.getInstance(); TimeZone timeZone_1 = TimeZone.getTimeZone("Asia/Rangoon"); cal.setTimeZone(timeZone_1); System.out.println(cal.getTime()); TimeZone timeZone_2 = TimeZone.getT
Calendar cal = GregorianCalendar.getInstance();
TimeZone timeZone_1 = TimeZone.getTimeZone("Asia/Rangoon");
cal.setTimeZone(timeZone_1);
System.out.println(cal.getTime());
TimeZone timeZone_2 = TimeZone.getTimeZone("Asia/Tokyo");
cal.setTimeZone(timeZone_2);
System.out.println(cal.getTime());
示例输出:
Thu Nov 22 09:00:33 MMT 2012
Thu Nov 22 09:00:33 MMT 2012
我的预期产出是:
Thu Nov 22 09:00:33 MMT 2012
Thu Nov 22 11:30:33 MMT 2012
您的代码很好,只是调试输出错误(误导)。返回独立于时区的对象。但总是打印带有系统时区的日期
Date.toString()
是如此违反直觉(它显示带有系统时区的日历时间,而几乎不存储millliseconds的数量),以至于它应该被禁止/弃用
要准确记录日志,请使用或调用各种Calendar.get*()
方法:
System.out.println(cal.get(Calendar.HOUR_OF_DAY));
System.out.println(cal.get(Calendar.MINUTE));
和关于java日期/时间处理的任何问题一样,考虑……/P>你问“相同的输出/时间”,而“示例输出”显示2H30M差异…日期对象是系统依赖的。试着把绳子拉出来。