isuspectthatjavawasbornandraisedonaunixsystem。
unixconsiderstheepoch (whendidtimebegin ) to be midnight,日本1,1970。
据说java起源于UNIX系统,但UNIX认为1970年1月1日0点是时间纪元。
但是,这依然不能很好地解释“为什么”,出于好奇,我继续用谷歌,总算找到了答案:
358 EN .维基百科. org /维基/UNIX _ time
这个说明是:
第一台计算机的操作系统是32位,时间也用32位表示。
system.out.println (英特尔.最大值;
2147483647
因为Integer在JAVA中用32位表示,所以32位可以表示的最大值是2147483647。
另外,1年365天的总秒数为31536000,
2147483647/31536000=68.1
也就是说,32位数能够表现的最长时间为68年,实际上是到2038年01月19日03时14分07分为止
秒内达到最大时间。 过了这个时间点,32位操作系统的所有时间都变成了
10000000 00000000 00000000 00000000
也就是1901年12月13日20时45分52秒,会发生时间倒流的现象,很多软件会异常运行。
到目前为止,我想已经给出了问题的答案:
时间最长间隔为68年,以32位表示,因为最早出现的UNIX操作系统考虑了计算
机器产生的年代和应用的时限将1970年1月1日综合为UNIX TIME的纪元时间(
时间),java当然也遵循着这个约束。
关于时间回归的现象,由于是以64位进行操作,因此可以认为随着64是操作系统而逐渐得到解决
系统可以显示到292、277、026、596年12月4日15时30分08秒。 相信我们n代的子孙,在哪里
地球毁灭的日子不用担心。 因为这个时间已经是千亿年后了。
最后一个问题:上面的system.out.println(newdate(0) )显示,打印时间是8点而不是0点。
原因有系统时间和本地时间的问题,其实系统时间仍然是0点,只是我电脑的时区
因为设在东8区,所以印刷的结果是8点。