以下程序产生错误的输出:
public class date
{
public static void main(String[] args)
{
Date d1 = new Date(1698526800000L);
Date d2 = new Date(1698530400000L);
Date d3 = new Date(1698534000000L);
Date d4 = new Date(1698537600000L);
System.out.println(d1);
System.out.println(d2);
System.out.println(d3);
System.out.println(d4);
}
}
结果:
Sun Oct 29 00:00:00 IDT 2023
Sun Oct 29 01:00:00 IDT 2023
Sun Oct 29 01:00:00 IST 2023
Sun Oct 29 02:00:00 IST 2023
为什么d2和d3会产生相同的日期,尽管ms值不同?
编辑:
我只想知道为什么会发生这种情况,我发现夏令时是这个问题的罪魁祸首
答案 0 :(得分:0)
虽然bitwise_xor
对象与Date
无关(在Java中,日期只代表一个时间点),当您调用TimeZone
时,它使用平台/系统的默认时区并显示相应的日期/时间。
如果您需要打印具有相同时区的所有日期,则可以在打印日期之前为您的程序设置toString()
时区(在应用启动期间),例如:
default
上述内容应使用TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
Date d1 = new Date(1698526800000L);
Date d2 = new Date(1698530400000L);
Date d3 = new Date(1698534000000L);
Date d4 = new Date(1698537600000L);
System.out.println(d1);
System.out.println(d2);
System.out.println(d3);
System.out.println(d4);
时区打印所有日期。