国产97色在线|亚洲-欧美人妻另类制服丝袜-欧美人成国产91视频-殷素素一女战二夫|www.ycjrc.net

為什么計算機時間要從1970年1月1日開始算起?

發(fā)布時間:2017-08-10 16:50 作者:獨孤劍 閱讀:1096

今天一時興起想起了在SQL Server中使用DateTime.MinValue插入時間時報錯的問題,原因就在于數(shù)據(jù)庫的最小時間和.Net里的最小時間不一致導致的,網(wǎng)上查閱了些資料,找到如下結(jié)果
Net Framewrok 中,
DateTime.MinValue => 0001/01/01 00:00:00
SqlDateTime.MinValue.Value => 1753/01/01 00:00:00
SQL Server 2005 中,
DateTime 最小值 => 1753/01/01 00:00:00
SmallDateTime 最小值 => 1900/01/01 00:00:00
Net Framewrok 中,
DateTime.MaxValue => 9999/12/31 23:59:59.999
SqlDateTime.MaxValue.Value => 9999/12/31 23:59:59.997
SQL Server 2005 中,
DateTime 最大值 => 9999/12/31 23:59:59.997
SmallDateTime 最大值 =>2079.6.6
所以需要在數(shù)據(jù)庫插入最小時間時不能使用DateTime.MinValue,需要使用

SqlDateTime.MinValue.Value。
 

好了到現(xiàn)在SQL Server數(shù)據(jù)庫時間問題解決了,突然又想起了系統(tǒng)中有個啥1970年1月1日的時間。那這個時間又是啥來來歷呢,懷著好奇寶寶的心理我有在網(wǎng)上查閱了一番得到如下解釋:

1.可以簡單的這樣認為:UNIX系統(tǒng)認為1970年1月1日0點是時間紀元,所以我們常說的UNIX時間戳是以1970年1月1日0點為計時起點時間的。這個解釋是懶人最愛^_^

 

2.這個比較科學

最初計算機操作系統(tǒng)是32位,而時間也是用32位表示。32位能表示的最大值是2147483647。另外1年365天的總秒數(shù)是31536000,2147483647/31536000 = 68.1,也就是說32位能表示的最長時間是68年,而實際上到2038年01月19日03時14分07秒,便會到達最大時間,過了這個時間點,所有32位操作系統(tǒng)時間便會變?yōu)?0000000 00000000 00000000 00000000,也就是1901年12月13日20時45分52秒,這樣便會出現(xiàn)時間回歸的現(xiàn)象,很多軟件便會運行異常了。
到這里,我想問題的答案已經(jīng)出來了:因為用32位來表示時間的最大間隔是68年,而最早出現(xiàn)的UNIX操作系統(tǒng)考慮到計算機產(chǎn)生的年代和應(yīng)用的時限綜合取了1970年1月1日作為UNIX TIME的紀元時間(開始時間),至于時間回歸的現(xiàn)象相信隨著64為操作系統(tǒng)的產(chǎn)生逐漸得到解決,因為用64位操作系統(tǒng)可以表示到292,277,026,596年12月4日15時30分08秒,相信我們的N代子孫,哪怕地球毀滅那天都不用愁不夠用了,因為這個時間已經(jīng)是千億年以后了。

微信打賞, 微信掃一掃

支付寶打賞, 支付寶掃一掃

如果文章對您有幫助,歡迎給作者打賞

作者最新文章
開發(fā)過程中解決360兼容模式瀏覽器的方法
云南象群向西南方向遷移,云南離群獨象距離象群約12公里
吉林做網(wǎng)站最低價格,吉林企業(yè)網(wǎng)站建設(shè)價格低至500元起
守象人直擊云南象群最新動向
網(wǎng)站影響百度蜘蛛抓取量的因素有哪些?為什么我的網(wǎng)站Baidu蜘蛛來的次數(shù)少?
企業(yè)名片
在線客服