java日期什么时候会崩溃?

AFAIK java以长度变量存储日期,以毫秒为单位。 因此,某一天将没有价值(因为长期有一个最大值),这将对应于该瞬间的时间。 你知道什么时候会发生吗?

很容易找到:

public class Test { public static void main(String[] args) { System.out.println(new java.util.Date(Long.MAX_VALUE)); } } 

给出输出(在我的盒子上):

 Sun Aug 17 07:12:55 GMT 292278994 

您可能需要从Long.MAX_VALUE减去一点以应对溢出长范围的时区,但它会给出一个合理的球场:)

根据目前的闰年规定,每年的平均天数将是

365 + 1/4 – 1/100 + 1/400 =每年365.2425天

这意味着我们平均每年有31556952000毫秒。

长值表示自Epoch (1970年1月1日)以来的毫秒数,并且Java long表示的最大数量是2 63 – 1,因此以下计算

1970 +(2 63-1)/ 31556952000

显示这种表示将溢出292278994年。


正如Jon Skeet指出的那样 ,这可以得到确认

 -> System.out.println(new Date(Long.MAX_VALUE)); Sun Aug 17 08:12:55 CET 292278994