java日期对象错误地计算

时间:2017-04-07 15:02:15

标签: java date

以下程序产生错误的输出:

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值不同?

编辑:

我只想知道为什么会发生这种情况,我发现夏令时是这个问题的罪魁祸首

1 个答案:

答案 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); 时区打印所有日期。