gpt4 book ai didi

java - 具有不同时区的 SameTime

转载 作者:行者123 更新时间:2023-11-29 05:52:05 24 4
gpt4 key购买 nike

为什么程序使用不同的 TimeZone 打印出相同的输出/时间?

    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

最佳答案

您的代码很好,只是调试输出错误(误导)。 cal.getTime()返回 Date对象,它独立于时区。但是Date.toString()始终使用系统的时区打印此日期。 Date.toString() 是如此违反直觉(它显示带有系统时区的日历时间,而它几乎不存储毫秒数),它应该被禁止/弃用。

要获得准确的日志记录,请使用 SimpleDateFormat或改为调用各种 Calendar.get*() 方法:

System.out.println(cal.get(Calendar.HOUR_OF_DAY));
System.out.println(cal.get(Calendar.MINUTE));

与往常一样,对于有关 Java 日期/时间处理的任何问题,请考虑 ...

关于java - 具有不同时区的 SameTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13508226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com