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差异…日期对象是系统依赖的。试着把绳子拉出来。