代码之家  ›  专栏  ›  技术社区  ›  lsalamon

为什么1970年1月1日是“纪元时间”?

  •  422
  • lsalamon  · 技术社区  · 5 年前

    为什么是

    1970年1月1日00:00:00

    考虑到 新纪元时间 ?

    5 回复  |  直到 6 年前
        1
  •  395
  •   Matt Howells    15 年前

    早期版本的Unix以1/60 s的间隔测量系统时间。这意味着32位无符号整数只能表示小于829天的时间跨度。因此,用数字表示的时间 0 (称为 时代 )必须设置在最近的过去。正如20世纪70年代初一样,这个时代被设定为1971-1-1。

    后来,系统时间被更改为每秒钟递增,这将32位无符号整数表示的时间跨度增加到大约136年。由于挤出每秒钟的时间不再那么重要,这个时代被四舍五入到最近的十年,因此变成了1970-1-1。我们必须假设这被认为比1971-1-1更整洁。

    注意32位 签署 整数,使用1970-1-1作为其纪元,可以表示到 2038-1-19 在哪一天,它将在1901年12月13日结束。

        2
  •  47
  •   jdecuyper    15 年前

    History .

    Unix时代的最早版本 一个32位整数,以 频率为60赫兹,即 硬件上的系统时钟 早期的Unix系统。值60 在某些软件中仍会显示hz 结果就是接口。时代也 与当前值不同。 这个 第一版 Unix程序员手册 1971年11月3日定义 Unix time as“从00:00:00开始, 1971年1月1日,以 第二个

        3
  •  8
  •   Marcio Aguiar    15 年前

    http://en.wikipedia.org/wiki/Unix_time#History 稍微解释一下Unix时间和所选时代的起源。Unix时间和纪元日期的定义在稳定其现状之前经历了一些变化。

    但这并不能说明为什么最终选择了1/1/1970。

    维基百科页面的重要摘录:

    这个 第一版 1971年11月3日的Unix程序员手册将Unix时间定义为“自1月1日00:00:00开始的时间, 一千九百七十一 以60秒为单位。

    由于范围有限,时代是 多次重新定义 ,然后将速率更改为1赫兹并将epoch设置为其当前值。

    后面的几个问题,包括当前定义的复杂性,都是由于Unix时间是通过使用逐渐定义的,而不是从一开始就完全定义的。

        4
  •  0
  •   Basil Bourque    6 年前

    纪元参考日期

    epoch reference date 是时间线上我们计算时间的点。在此点之前的时刻用负数计数,之后的时刻用正数计数。

    使用中的许多时代

    为什么1970年1月1日00:00:00被视为新纪元?

    不,不是 这个 时代, 时代。有 使用中的许多时代 .

    这个时代的选择是 任意的 .

    主要计算机系统和库至少使用 couple dozen various epochs . 最流行的时代之一就是 Unix Time ,使用您提到的1970年UTC时刻。

    虽然很流行,但Unix Time_s 1970可能不是 共同点。同样,最常见的情况是1900年1月0日,无数的Microsoft Excel&Lotus 1-2-3电子表格,或者2001年1月1日,苹果公司的Cocoa框架在全球超过10亿台iOS/MacOS机器上的无数应用程序中使用。或者可能是1980年1月6日 GPS 设备?

    许多颗粒

    不同的系统在计数时间上使用不同的粒度。

    甚至所谓的Unix时间也不尽相同,有些系统会计算整个系统的时间。 seconds 还有一些计数 milliseconds . 许多数据库,如Postgres使用 microseconds . 一些,如现代 Java.时间 Java 8和以后的框架,使用 nanoseconds . 有些还使用其他粒度。

    国际标准化组织8601

    由于在使用一个时间段参考和粒度方面存在很大的差异,一般最好避免将时间作为一个时间段的计数进行通信。在不明确的时代和粒度之间,加上人类无法感知有意义的值(因此错过了错误的值),使用纯文本而不是数字。

    这个 ISO 8601 标准提供了一套广泛的实用、设计良好的格式,用于将日期时间值表示为文本。这些格式很容易被机器解析,也容易被跨文化的人阅读。

    这些包括:

        5
  •  -10
  •   PaulJWilliams    15 年前

    简短回答:为什么不呢?

    更长的答案:时间本身并不重要,只要使用它的每个人都同意它的价值。由于1/1/70已经使用了很长时间,使用它将使尽可能多的人都能理解您的代码。

    选择一个任意的时代只是为了与众不同没有什么大的价值。