为什么我不能将系统时间更改为小于 1970?

Ave*_*sta 29 date

我想检查当我更改计算机日期时某个软件的反应。但是我无法将系统时间更改为小于 1970 的任何时间。这是为什么呢?

K7A*_*AAY 29

UNIX 和POSIX兼容系统将系统时间(“Unix 时间”)编码为自 Unix 纪元 1970 年 1 月 1 日 00:00:00 UTC开始经过的秒数,不计闰秒。该限制是从 UNIX 继承而来的。32 位值意味着,为了获得合理的精度,第 0 天必须非常接近,这样才能避免回到公元 0 年,或者更合理地,5780 年和变化,因为这个答案的日期是 10 Adar 5780 {克}。

  • 虽然它是 32 位签名的,所以它应该(并且在大多数情况下)可以追溯到 1901 年末。 (14认同)
  • 使用 1970 允许它使用 32 位有符号整数到达 [2038](https://en.wikipedia.org/wiki/Year_2038_problem)。 (7认同)
  • 请注意,这个定义有点不正确,因为 Unix 时间不计算闰秒。因此,自 1970 年 1 月 1 日以来,秒数比 Unix 时间所暗示的要多。 (3认同)

sch*_*ity 14

来自维基百科

Unix 时间(也称为纪元时间、POSIX 时间、自纪元以来的秒数或 UNIX 纪元时间)是一种用于描述时间点的系统。它是自 Unix 纪元以来经过的秒数,即 1970 年 1 月 1 日 UTC 时间 00:00:00 减去闰秒。

还有一个解释

Linux 遵循 Unix 设定的传统,即自 1970 年 1 月 1 日正式“生日”(在计算术语中称为“纪元”)以来以秒为单位计算时间。

更完整的解释可以在这篇连线新闻文章中找到。它解释说,早期的 Unix 工程师随意选择了那个日期,因为他们需要为时间的开始设置一个统一的日期,而 1970 年的元旦似乎最方便。