gpt4 book ai didi

java - 带有日期的负参数的奇怪结果

转载 作者:行者123 更新时间:2023-12-02 02:22:21 27 4
gpt4 key购买 nike

考虑以下程序

    Date date1 = new Date(-124304227239000L);
Date date2 = new Date(0);
System.out.println(date1 + " vs. " + date2);

结果(至少在我的计算机上使用 Java 8,在另一台计算机上使用 Java 11):

Sun Jan 01 16:59:21 CET 1970 vs. Thu Jan 01 01:00:00 CET 1970

这看起来很奇怪,因为按照文档 ( https://docs.oracle.com/javase/8/docs/api/java/util/Date.html#Date-long- ),负值作为 Date 参数表示 1970 年之前的日期。相反,我得到的是星期日而不是星期四,但仍然是 1970 年。

谁能给我解释一下吗?

最佳答案

您提供的值大约是公元前 1969/1970 年,具体取决于您是否进行公历/儒略转换。 Date.toString(),除了所有其他问题之外,没有提及时代。

如果您使用具有相同值的Instant,则会更清晰:

Instant instant = Instant.ofEpochMilli(-124304227239000L);
System.out.println(instant);

输出:

-1970-12-15T15:59:21Z

我从中得出以下结论:

  • 使用遥远过去的值时,需要牢记许多注意事项,包括文本表示和日历系统
  • 尽可能避免使用java.util.Date

关于java - 带有日期的负参数的奇怪结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66204993/

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