Unix时代的时间从1971年修改为现在的1970年价值?

时间:2012-07-20 04:45:31

标签: unix unix-timestamp

根据第一版Unix Programmer's Manual,Unix时间被定义为"自1971年1月1日00:00:00以来的时间,以六十分之一秒为单位"

这是什么时候改为1970年1月1日午夜(UTC)的当前值?

1 个答案:

答案 0 :(得分:7)

在第一版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 已被更多精确的协调世界时以及关于闰秒的说明。在将此作为带符号的32位数字返回的系统上,这将一直有效到year 2038。幸运的是,许多系统现在使用64位来表示该值。

相关问题