为什么日期是从1970年1月1日算起?

使用日期(1970年1月1日)作为时间操纵的默认标准背后有什么原因吗?我在 Java 和 Python 中都看到过这个标准。这两种语言我都知道。是否有其他流行语言遵循同样的标准?

请描述一下。

109728 次浏览

这是 Unix 时间。的标准

Unix time, or POSIX time, is a system for describing points in time, defined as the number of seconds elapsed since midnight proleptic Coordinated Universal Time (UTC) of January 1, 1970, not counting leap seconds.

是的,C (和它的家族)。这也是 Java 把它带到的地方。

1970年1月1日上午00:00:00是 POSIX time的零点。

使用日期(1970年1月1日)作为时间操纵的标准背后有什么原因吗?

这不重要。

Python 的 time模块 C 库。问问肯 · 汤普森为什么选择这个日子作为一个划时代的日子。也许是某人的生日。

Excel 使用两个不同的时代。为什么不同版本的 Excel 使用不同的日期?

除了真正的程序员,没有人会知道 为什么做出了那些决定。

还有..。

选择日期并不重要,就是选择了。

天文学家使用他们自己划时代的日期: http://en.wikipedia.org/wiki/Epoch_(astronomy)

为什么? 必须选择一个日期才能算出来。任何随机的日期都可以。

过去的日期避免了一般情况下的负数。

一些更聪明的软件包使用了阳历1年,为什么是1年呢?
像《历法计算》这样的书给出了一个原因: 它在数学上稍微简单一些。

但是如果你仔细想想1970年1/1/1和1/1/1970之间的差距只是1969年,一个微不足道的数学补偿。

问) “为什么日期是从1970年1月1日开始计算的?”

A) 它必须尽可能近,但包括 一些过去。 很可能没有其他重要的原因,因为很多人都有同样的感觉。

他们知道如果他们把它放在过去太远的地方会造成一个问题,他们也知道如果放在未来会产生负面的结果。没有必要深入探讨过去,因为事件很可能发生在未来。

备注: 另一方面,玛雅人需要把事件放到过去,因为他们对过去有很多了解,为此他们制作了一个长期的日历。把日常现象都记录在日历上。

时间戳不是用来当日历的,而是一个时代。我相信玛雅人用同样的观点制作了他们的长期历法。(这意味着他们非常清楚,他们与过去没有任何关系,他们只是需要在更大的范围内看到它)

为什么总是1970年1月1日,因为-’1970年1月1日’通常被称为“时代日期”是 Unix 计算机时间开始的日期,那个时间戳被标记为’0’。自该日期以来的任何时间都是根据经过的秒数计算的。简而言之... 任何日期的时间戳在该日期和“1970年1月1日”之间的时间差都是以秒为单位的。时间戳只是一个整数,从“1970年1月1日午夜”上的数字“0”开始,并且随着每一秒钟的过程递增“1”。为了将 UNIX 时间戳转换为可读的日期,PHP 和其他开源语言提供了内置函数。

使用日期(1970年1月1日)作为默认标准

这个问题提出了两个错误的假设:

  • 自1970年以来,计算机中的所有时间跟踪都是以计数的方式进行的。
  • Such tracking is standard.

24个纪元

计算时间是从1970年初开始跟踪的 not always。虽然 时代参考很流行,但是几十年来各种计算环境至少使用了接近 24个纪元的计算机。有些来自其他世纪。从0年(0年)到2001年。

这里有一些。

January 0, 1 BC

公元1年1月1日

1582年10月15日

January 1, 1601

1840年12月31日

1858年11月17日

1899年12月30日

1899年12月31日

January 1, 1900

1904年1月1日

December 31, 1967

1980年1月1日

1980年1月6日

January 1, 2000

二○○一年一月一日

Unix 时代常见,但不占主导地位

1970年初很流行,可能是因为 Unix 使用了它。但绝非如此。例如:

ISO 8601

假设某个 count-since-epoch 正在使用 Unix epoch,这将为 bug 提供一个很大的漏洞。这样的计数不可能让人立即破译,因此在调试和日志记录时不会轻易标记错误或问题。另一个问题是下面解释的粒度模糊性。

我强烈建议将日期时间值序列化为用于数据交换的明确的 ISO 8601字符串,而不是像 2014-10-14T16:32:41.018Z这样的整数 count-since-epoch: YYYY-MM-DDTHH:MM:SS.SSSZ

历史以来的 什么计数

另一个问题与计数自纪元时间跟踪是时间单位,至少有四个层次的分辨率通常使用。

Diagram showing different software counting from epoch by seconds, milliseconds, microseconds, or nanoseconds.