为什么从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
(1899January 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所采用的地方。