2012-07-20 58 views
5

根據第一版Unix Programmer's Manual,Unix時間被定義爲「由於00:00:00的時間,1971年1月1日,在第二測量六十分」Unix時代從1971年到現在的1970年的時間是什麼時候修改的?

當這樣做改變其當前的午夜值(UTC),1970年1月1日?

+0

[爲什麼是1/1/1970「紀元時間」?](http://stackoverflow.com/questions/1090869/why-is-1-1-1970-the-epoch-time) – ephemient 2012-07-20 04:57:52

+1

鏈接的文章和維基百科沒有說當時代發生變化,所以我會做出犧牲。記住,你要求它!曆元變化的時間是在曆元時代開始後的0年,0個月,0天,0小時,0分鐘和0秒。 – 2012-07-20 05:06:35

+0

哦,我剛剛注意到,安德魯的頭像是合適的。它發生在任何時候。 – 2012-07-20 05:07:48

回答

6

在第一版Unix(1971年11月)中,manual page for the time system call表示它返回「1971年1月1日00:00:00之後的時間,以六十分之一秒爲單位」。這是一個32位的值,所以即使被視爲未簽名,它也只能跟蹤超過這個日期的約2.26年。然而,手冊頁和source code comments將系統調用描述爲「得到一年中的時間」,年份不能爲​​,並且date命令和ctime()函數(用於格式化日期和時間)沒有格式化一年,甚至不能正確地工作時間值大於1年,因此可能預計日期將每年手動重置,而手冊頁中1971年的意義不大。那麼,除了1972年有一天多一點的小問題,關於這一點,後來在錯誤部分添加了note:「該例程必須重新組裝爲閏年」。尼斯。

1972年時間系統調用的手冊頁是changed,表明它返回自「1972年1月1日00:00:00」以來的時間,附註:「時間存儲在32位這保證了每2.26年一次的危機。「

在第四版中,Unix(1973年11月)the time system call被更改爲「自1970年1月1日00:00:00 GMT以來的時間,以秒爲單位」。 (手冊頁的日期爲1973年8月5日,因此可能在最初進行更改時)。這基本上是當前的定義,除了歷史術語GMT已被更精確的協調世界時並對閏秒進行了澄清。在將此返回爲有符號32位數的系統上,這將工作到year 2038。幸運的是,許多系統現在使用64位來表示這個值。

相關問題