考虑以下程序
Date date1 = new Date(-124304227239000L);
Date date2 = new Date(0);
System.out.println(date1 + " vs. " + date2);
Run Code Online (Sandbox Code Playgroud)
结果(至少在我的计算机上使用 Java 8,在另一台计算机上使用 Java 11):
Sun Jan 01 16:59:21 CET 1970 vs. Thu Jan 01 01:00:00 CET 1970
Run Code Online (Sandbox Code Playgroud)
这看起来很奇怪,因为按照文档(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);
Run Code Online (Sandbox Code Playgroud)
输出:
-1970-12-15T15:59:21Z
Run Code Online (Sandbox Code Playgroud)
我会由此得出以下结论:
java.util.Date因为你可以尽可能| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |