Aven Desta Asked: 2020-03-07 08:00:47 +0800 CST2020-03-07 08:00:47 +0800 CST 2020-03-07 08:00:47 +0800 CST 为什么我不能将系统时间更改为小于 1970? 772 我想检查当我更改计算机日期时某个软件的反应。但是我无法将系统时间更改为小于 1970 的任何时间。这是为什么呢? date 3 个回答 Voted Best Answer K7AAY 2020-03-07T08:04:44+08:002020-03-07T08:04:44+08:00 UNIX 和POSIX兼容系统将系统时间(“Unix 时间”)编码为自 1970 年 1 月 1 日 00:00:00 UTC Unix 纪元开始以来经过的秒数,不计算闰秒除外。该限制是从 UNIX 继承的。32 位值意味着,为了获得合理程度的精确度,零天必须非常接近,因此不能回到公元 0 年,或者更合理地说,是 5780 年和变化,因为这个答案的日期是 10 Adar 5780 {克}。 schrodingerscatcuriosity 2020-03-07T08:07:50+08:002020-03-07T08:07:50+08:00 来自维基百科: Unix 时间(也称为纪元时间、POSIX 时间、自纪元以来的秒数或 UNIX 纪元时间)是用于描述时间点的系统。它是自 Unix 纪元以来经过的秒数,即 1970 年 1 月 1 日 UTC 时间 00:00:00 减去闰秒。 还有一个解释: Linux 遵循 Unix 设定的传统,即自 1970 年 1 月 1 日正式“生日”(在计算术语中称为“纪元”)以来以秒为单位计算时间。 可以在此连线新闻文章中找到更完整的解释。它解释说,早期的 Unix 工程师随意选择了那个日期,因为他们需要为时间的开始设置一个统一的日期,而 1970 年元旦似乎最方便。 tquadrat 2020-03-08T09:58:02+08:002020-03-08T09:58:02+08:00 在 UNIX(和 Linux)系统上,时间计数器被解释为(毫秒)秒的无符号值,零定义为 1970-01-01T00:00:00.000 UTC。如果您想将系统时间设置为之前的任何日期/时间,则必须将该计数器设置为负值——这对于无符号值不起作用(因为它是无符号的……)。 关于为什么 UNIX 的创建者选择那个时间点作为“时代的开始”,有几种解释,我不知道哪一个是正确的。但是他们对 1970 年的决定是您无法将系统设置为更早时间的原因。
UNIX 和POSIX兼容系统将系统时间(“Unix 时间”)编码为自 1970 年 1 月 1 日 00:00:00 UTC Unix 纪元开始以来经过的秒数,不计算闰秒除外。该限制是从 UNIX 继承的。32 位值意味着,为了获得合理程度的精确度,零天必须非常接近,因此不能回到公元 0 年,或者更合理地说,是 5780 年和变化,因为这个答案的日期是 10 Adar 5780 {克}。
来自维基百科:
还有一个解释:
在 UNIX(和 Linux)系统上,时间计数器被解释为(毫秒)秒的无符号值,零定义为 1970-01-01T00:00:00.000 UTC。如果您想将系统时间设置为之前的任何日期/时间,则必须将该计数器设置为负值——这对于无符号值不起作用(因为它是无符号的……)。
关于为什么 UNIX 的创建者选择那个时间点作为“时代的开始”,有几种解释,我不知道哪一个是正确的。但是他们对 1970 年的决定是您无法将系统设置为更早时间的原因。