为什么计算机时间和众多编程语言要从1970年1月1日开始算起

今天我们来讨论一个非常有意思的事,那就是你知道为什么计算机时间和众多的编程语言的时间都要从1970年1月1日开始算起呢,时间计时起点到底为什么是
1970年1月1号呢?我想大家应该都知道,但是我估计大家几乎大部分都没有想过这个问题。我们就一起来聊聊,这是为什么?

1、最懒的解释

很多编程语言起源于UNIX系统,而UNIX系统认为1970年1月1日0点是时间纪元,所以我们常说的UNIX时间戳是以1970年1月1日0点为计时起点时间的。

说了这个懒人的解释,估计大家还没有懂得真正的意思。所以我们接下来深入的了解一下。

2、深入的了解

最初计算机操作系统是32位,而时间也是用32位表示。

System.out.println(Integer.MAX_VALUE);

2147483647

Integer 在JAVA内用32位表示,因此32位能表示的最大值是2147483647。另外1年365天的总秒数是
31536000,2147483647/31536000 =
68.1,也就是说32位能表示的最长时间是68年,从1970年开始的话,加上68.1,实际最终到2038年01月19日03时14分07秒,便会到
达最大时间,过了这个时间点,所有32位操作系统时间便会变为10000000 00000000 00000000
00000000,算下来也就是1901年12月13日20时45分52秒,这样便会出现时间回归的现象,很多软件便会运行异常了。


这里,我想问题的答案已经显现出来了,那就是:因为用32位来表示时间的最大间隔是68年,而最早出现的UNIX操作系统考虑到计算机产生的年代和应用的
时限综合取了1970年1月1日作为UNIX
TIME的纪元时间(开始时间),至于时间回归的现象相信随着64为操作系统的产生逐渐得到解决,因为用64位操作系统可以表示到
292,277,026,596年12月4日15时30分08秒,相信我们的N代子孙,哪怕地球毁灭那天都不用愁不够用了,因为这个时间已经是千亿年以后
了。

来源:51CTO

时间: 2024-09-08 13:31:14

为什么计算机时间和众多编程语言要从1970年1月1日开始算起的相关文章

知识扩展----为什么计算机时间要从1970年1月1日开始算起?

1 最懒的解释 2 深入的了解 今天我们来讨论一个非常有意思的事,那就是你知道为什么计算机时间和众多的编程语言的时间都要从1970年1月1日开始算起呢,时间计时起点到底为什么是 1970年1月1号呢?我想大家应该都知道,但是我估计大家几乎大部分都没有想过这个问题.我们就一起来聊聊,这是为什么? 1. 最懒的解释 很多编程语言起源于UNIX系统,而UNIX系统认为1970年1月1日0点是时间纪元,所以我们常说的UNIX时间戳是以1970年1月1日0点为计时起点时间的. 说了这个懒人的解释,估计大家

为什么编程语言以及数据库要从1970年1月1日开始计算时

今天一时兴起想起了在SQL Server中使用DateTime.MinValue插入时间时报错的问题,原因就在于数据库的最小时间和.Net里的最小时间不一致导致的,网上查阅了些资料,找到如下结果 Net Framewrok 中, DateTime.MinValue           => 0001/01/01 00:00:00 SqlDateTime.MinValue.Value  => 1753/01/01 00:00:00   SQL Server 2005 中, DateTime 最小

联通iPhone4上市时间确认 9月8日开始销售

腾讯数码讯(水蓝)联通版iPhone4将于9月份在国内发售看起来已经没有多少悬念,但在具体的上市时间上却存在多种传闻和说法.继不久前所谓联通员工披露iPhone4在国内的http://www.aliyun.com/zixun/aggregation/6442.html">上市计划之后,日前又有网友上传的照片为我们提前披露了联通iPhone4更为确切的发售时间.据悉,这款超人气苹果手机的上市时间相比过去提前了5天,将于9月8日开始销售. 按照联通员工披露的说法,联通版iPhone4的理想状态

c#如何修改计算机时间日期和格式?利用WindowAPI函数可以做到

c#利用WindowAPI函数修改计算机日期时间和格式,代码片段如下,有需要的朋友拿去吧.  代码如下 复制代码 Public Class SetComputerDateTime { [DllImport("kernel32.dll", EntryPoint = "GetSystemDefaultLCID")] public static extern int GetSystemDefaultLCID(); [DllImport("kernel32.dll

任天堂或在明年1月19日宣布3DS欧洲发售时间

虽然任天堂此前早早宣布下一代3DS掌机将在明年2月26号日本发售,但是欧洲和美国的上市时间还只是比较模糊的三月份,不过上述地区的具体上市时间很有可能在下月揭晓,任天堂已经在筹划3DS的欧洲发售会. 据英国媒体Pocket-Lint报道,他们已经接到了任天堂有关参加"SavetheDate"会议的邀请函,会议举行时间是在2011年1月19日,地点阿姆斯特丹. 这不禁让我们联想到此前IGN得到的3DS消息,IGN主编RichGeorge称,任天堂将在1月下旬宣布众多3Ds游戏信息,并且要求

七天时间,带网站走出8月25日的降权阴影

  借此文王施帆祝愿各位站长.SEO朋友国庆节日愉快. 从8月25日被百度降权之后,王施帆一直在积极的寻求方法.前期,主要是按部就班的来,每天定时更新原创文章,定量的建设外链,但是,等到9月25日还是 没有丝毫好转的迹象,有些客户就急了,每天都打电话过来催促,"以前合作一年的排名都在首页的,为什么现在排名不行了?"."你们是不是不努力啊?我看网 站都很少更新了!"等等质疑.面对这样的质问,我都细心的解释了,可似乎没有得到他们的理解,依旧每天在QQ上问排名情况.客户的

Java获取时间年、月、日的方法

  本文实例讲述了Java获取时间年.月.日的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 package com.date.demo; import jav

只显示月、日、时-Android请教:同时显示日期和时间选择器

问题描述 Android请教:同时显示日期和时间选择器 开发中遇到一个问题: 需要在一个控件中同时显示日期和时间选择器 要求:日期只显示月.日:时间只显示24小时制的时 网上翻了好久没看见合适的,请教各位路过的大神给一些思路或者解决方案 解决方案 http://www.iteye.com/topic/1131942挺好的,不要年份的话,可以到xml里面将年份隐藏 解决方案二: http://www.2cto.com/kf/201407/320686.html 解决方案三: 朋友你好,你发的这个链

《魔兽世界》6.0国服跳票,上线时间调整到11月20日

我们之前曾经报道过<魔兽世界>国服6.0即将在11月18日上线的消息,这一快速而又高效的动作让网易获得不少人气,不过最近官方又打算变卦了.今天上午网易<魔兽世界>官网 刊登了一则 新的官方消息,内容主要是为调整<德拉诺之王>上线日期事宜,具体上线时间将由11月18日调整到11月20日.有部分玩家表示理解网易这一举措,毕竟可能有暴雪的因素横插在里边,不过更多的玩家则对晚开放 两天表示不满和质疑.以下官方公告:自<德拉诺之王>在欧美上线以来,受到广大玩家的热情反