UNIX时间

UNIX時間,或稱POSIX時間UNIX類UNIX系統使用的時間表示方式:從UTC1970年1月1日0時0分0秒起至現在的總秒數,不考慮閏秒[1]。 在多數Unix系統上Unix時間可以透過date +%s指令來檢查。

當前Unix時間
1613927608
ISO 8601表示法
2021-02-21T17:13:28+00:00
如果時間不符,請點擊右下方的更新按鈕。

历史

1970年, Unix正式诞生,在第一版《Unix Programmer's Manual》中把“1971年11月3日”定义为“自1970年1月1日0時0分0秒以来以1/60秒为单位的时间”。此后,这个定义由于可定义的时间范围,时区,闰秒等问题被重新定义。

問題

2038年问题

2038年1月19日3時14分07秒,32位元系統的UNIX時間將會被重置。

現時大部分使用UNIX的系統都是32位元的,即它們會以32位有符号整数表示時間类型time_t。因此它可以表示136年的秒数。表示協調世界時間1901年12月13日星期五20時45分52秒至2038年1月19日3時14分07秒(二進制:01111111 11111111 11111111 11111111,0x7FFF:FFFF),在下一秒二進制數字會是10000000 00000000 00000000 00000000(0x8000:0000),這是負數,因此各系統會把時間誤解作1901年12月13日20時45分52秒(亦有可能回歸到1970年)。這時可能會令軟體發生問題,導致系統癱瘓。

目前的解決方案是把系統由32位元轉為64位元系統。在64位系統下,此時間最多可以表示到2922億7702萬6596年12月4日15時30分08秒。

Unix负时间导致部分iPhone手机无法启动

在2016年2月12日,据披露,如果把苹果iPhoneiPad等设备的系统时间设置为1970年1月1日,随后重启设备,它会无法正常启动。目前苹果公司正式承认了漏洞存在,但是尚未公布具体的引发原因。[2]部分中国大陆用户猜想这是因为调整当地时间到1970.1.1 0:00后,如果时区为正,那么GMT时间就早于unix定义的0时间。例如北京时间 1970.1.1 0:00 (UTC+0800) 是UTC 1969.12.31 16:00 对应的unix时间是负的。但是有人回應嘗試設為正時區重啟後仍然无法正常启动。[3]苹果对此采用的策略是在随后的固件更新中将时间禁止调整到2000年以前。

纪念日

UNIX时间以5000日为纪念日,第一个5000日是1983年9月10日,第二个5000日(即第1萬日)是1997年5月19日,第三个5000日(即第1萬5000日)是2011年1月26日,第四个5000日(即第2萬日)是2024年10月4日,第五百个5000日(即第250萬日)是8814年10月8日[4]

相关条目

参考文献

  1. The Unix leap second mess
  2. . [2016-02-16]. (原始内容存档于2019-05-02).
  3. .
  4. . [2011-01-27]. (原始内容存档于2011-01-29).

外部連結

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.