为什么从1970年1月1日起计算date?

使用date(1970年1月1日)作为时间操纵的默认标准是否有任何理由? 我已经在Java和Python中看到了这个标准。 我知道这两种语言。 还有其他stream行语言是否遵循相同的标准?

请描述。

这是Unix时间的标准。

Unix时间或POSIX时间是用于描述时间点的系统,定义为从午夜到1970年1月1日的协调世界时(UTC)所经过的秒数,不包括闰秒。

这个问题有两个错误的假设:

  • 计算中的所有时间跟踪都是1970年以来的计数。
  • 这种跟踪是标准的。

二十几个世纪

计算时间并不总是从1970年开始。 虽然这个时代很stream行,但几十年来的各种计算环境至less使用了近二十个时代 。 有些来自其他世纪。 他们从0(零)到2001年不等。

Unix时代通用,但不是主导

1970年初stream行,可能是因为Unix的使用。 但绝不占主导地位。 例如:

  • 微软Excel和Lotus 1-2-3文档无数百万(十亿?)使用January 0, 1900 (1899 January 0, 1900 12月31日)。
  • 全球现在有超过十亿个iOS / OS X设备使用1 January 2001, GMT的cocoa(NSDate)时代 。
  • GPS卫星导航系统使用January 6, 1980而欧洲替代伽利略则使用22 August 1999

ISO 8601

假设一个自从使用Unix纪元的时代开始就是一个很大的漏洞。 这样的计数对于人类来说是不可能立即破译的,所以在debugging和logging时不容易标记错误或问题。 另一个问题是下面解释的粒度的模糊性。

我强烈build议将date – 时间值序列化为明确的ISO 8601string进行数据交换,而不是一个整数自 – 纪元: YYYY-MM-DDTHH:MM:SS.SSSZ ,如2014-10-14T16:32:41.018Z

计数从什么时代开始

自纪元时间追踪的另一个问题是时间单位,通常至less使用四级分辨率。


  • 最初的Unix设施使用了整秒,导致2038年的问题,当我们达到自1970年以来的秒数极限,如果存储为32位整数。
  • 毫秒
    由较旧的Java库(包括捆绑的java.util.Date类和Joda-Time库)使用。
  • 微秒
    由Postgres等数据库使用。
  • 纳秒
    在Java 8中由新的java.time包使用。

显示不同软件按秒,毫秒,微秒或纳秒计数的图表。

1970年1月1日00:00:00是POSIX时间的零点。

使用date(1970年1月1日)作为时间操纵的标准是否有任何理由?

没有理由重要。

Python的time模块 C库。 问肯·汤普森他为什么select那个date一个划时代的date。 也许这是某个人的生日

Excel使用两个不同的时代。 任何不同版本的Excel使用不同date的原因?

除了实际的程序员之外,其他人都不知道为什么那些决定是做出来的。

和…

为什么selectdate并不重要。 它只是。

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

为什么? 必须select一个date来使math成为可能。 任何随机的date将起作用。

过去的一个date避免了一般情况下的负数。

一些更聪明的软件包使用的是公元1年。任何第一年的理由?
在“日历计算”这类书籍中有一个原因:它在math上稍微简单一些。

但是如果你仔细想一想,1/1/1和1/1/1970之间的差距就是1969年的一个微不足道的math抵消。

为什么它总是在1970年1月1日,因为 – '1970年1月1日'通常被称为“纪元date”是Unix计算机开始的时间,并且该时间戳被标记为“0”。 自那之后的任何时间都是根据经过的秒数来计算的。 用简单的话来说…任何date的时间戳将在这个date和'1970年1月1日'之间以秒为单位的时间戳。时间戳只是从1970年1月1日午夜的数字“0”开始的一个整数,然后递增每次第二次通过'1'将UNIX时间戳转换为可读datePHP和其他开源语言提供内置函数。

Q) “为什么从1970年1月1日起计算date?”

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

他们知道,如果把这个问题放在过去的问题上,就会产生问题,而且他们知道,如果这个问题在将来就会带来负面的结果。 过去没有必要去做更深入的事情,事情很可能会在未来发生。

注:另一方面,玛雅人有必要把事件放在过去,因为知道了很多过去,为此他们做了一个长期的日历。 只是把所有的常规现象放在日历上。

时间戳不是一个日历,这是一个时代。 我相信玛雅人用同样的观点来做长期的日历。 (意思是他们知道他们和过去没有任何关系,他们只是需要更大规模的看待)

是的,C(和它的家庭)。 这也是Java所采用的地方。