【问题标题】:When was Unix epoch time revised from 1971 to current 1970 value?Unix 纪元时间何时从 1971 年修订为 1970 年的当前值?
【发布时间】:2012-07-20 04:45:30
【问题描述】:

根据第一版Unix Programmer's Manual,Unix 时间定义为“从 1971 年 1 月 1 日 00:00:00 开始的时间,以六十分之一秒为单位”

何时更改为 1970 年 1 月 1 日午夜 (UTC) 的当前值?

【问题讨论】:

  • 链接的文章和维基百科没有说时代何时改变,所以我会做出牺牲。记住,你要求的!历元更替的时间为历元更替开始后的0年0月0日0时0分0秒。
  • 哦,我刚刚注意到安德鲁的头像很合适。很快就发生了。

标签: unix unix-timestamp


【解决方案1】:

在第一版 Unix(1971 年 11 月)中,manual page for the time system call 声明它返回“从 1971 年 1 月 1 日 00:00:00 开始的时间,以六十分之一秒为单位”。这是一个 32 位的值,因此即使被视为无符号,它也只能在此日期之后跟踪大约 2.26 年。但是手册页和source code comments 将系统调用描述为“获取时间”,年份不能是set,而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 以来的时间,以秒为单位”。 (手册页的日期为 1973 年 8 月 5 日,因此可能是最初进行更改的时间。)这基本上是当前的定义,除了历史术语 GMT 已被替换为 more精确的协调世界时并已对闰秒进行了说明。在将其作为有符号 32 位数字返回的系统上,这将一直有效,直到 year 2038。幸运的是,现在很多系统都使用 64 位来表示这个值。

【讨论】:

    猜你喜欢
    • 2012-09-27
    • 1970-01-01
    • 2011-05-13
    • 2019-05-01
    • 2011-01-03
    • 2018-03-21
    • 2013-01-28
    • 1970-01-01
    • 2011-08-31
    相关资源
    最近更新 更多