使用日期(1970年1月1日)作为时间操纵的默认标准是否有任何理由?我在Java和Python中都看到过这个标准。我知道这两种语言。是否有其他流行语言遵循相同的标准?
请描述一下。
这是Unix time.的标准
Unix时间或POSIX时间是用于描述时间点的系统,定义为自1970年1月1日午夜无效协调世界时(UTC)以来经过的秒数,不计算闰秒。
使用日期(1970年1月1日)作为默认标准
该课题有两个错误的假设:
计算时间并不总是从1970年开始跟踪UTC。虽然epoch很受欢迎,但几十年来各种计算环境至少使用了two dozen epochs。有些来自其他世纪。它们的范围从0年(零)到2001年。
这里有几个。
公元前1月0日
公元1月1日
1582年10月15日
1601年1月1日
1840年12月31日
1858年11月17日
1899年12月30日
1899年12月31日
1900年1月1日
1904年1月1日
1967年12月31日
1980年1月1日
1980年1月6日
2000年1月1日
2001年1月1日
1970年初很受欢迎,可能是因为Unix使用它。但绝不是占主导地位。例如:
January 0, 1900
(1899年12月31日)。1 January 2001, GMT
。January 6, 1980
,而欧洲替代Galileo使用22 August 1999
。假设count-since-epoch正在使用Unix时代,那就是为bug提供了一个很大的漏洞。这样的计数对于人类来说不可能立即解密,因此在调试和记录时不会轻易地标记错误或问题。另一个问题是下面解释的粒度的模糊性。
我强烈建议将日期时间值序列化为数据交换的明确ISO 8601字符串,而不是整数count-since-epoch:YYYY-MM-DDTHH:MM:SS.SSSZ
,例如2014-10-14T16:32:41.018Z
。
count-since-epoch时间跟踪的另一个问题是时间单位,通常使用至少四个级别的分辨率。
1970年1月1日00:00:00 am是POSIX time的零点。
使用日期(1970年1月1日)作为时间操纵的标准是否有任何理由?
没有理由重要。
Python的time
模块是C库。问肯汤普森为什么选择这个日期作为划时代的日期。也许这是某人的生日。
Excel使用两个不同的时期。任何不同版本的Excel使用不同日期的原因是什么?
除了实际的程序员,没有人会知道为什么做出那些决定。
和...
为什么选择日期并不重要。它只是。
天文学家使用他们自己的划时代日期:http://en.wikipedia.org/wiki/Epoch_(astronomy)
为什么?必须选择日期才能使数学运算出来。任何随机日期都有效。
过去的日期避免了一般情况下的负数。
一些更聪明的套餐使用了预感格里高利年1.第一年的任何理由? 像Calendrical Calculations这样的书中有一个理由:它在数学上稍微简单一些。
但是如果你考虑一下,1/1/1和1/1/1970之间的差异只是1969年,这是一个微不足道的数学偏移。
为什么它总是1970年1月1日,因为 - '1970年1月1日'通常称为“纪元日期”是Unix计算机开始运行的日期,并且时间戳标记为“0”。自该日期起的任何时间都是根据经过的秒数计算的。简单来说......任何日期的时间戳都将是该日期与'1970年1月1日'之间的秒数差异时间戳只是一个整数,从1970年1月1日午夜的数字'0'开始并继续增加通过'1'作为每秒传递将UNIX时间戳转换为可读日期PHP和其他开源语言提供内置函数。
Q)“为什么日期是从1970年1月1日算起来的?”
A)它必须尽可能新,但包括一些过去。由于很多人都有同样的感觉,因此很可能没有其他明显的原因。
他们知道,如果他们把它放在过去太远的地方就会出现问题,而且如果将来它们知道它会产生负面结果。过去没有必要更深入,因为事件最有可能在未来发生。
注意:另一方面,玛雅人需要把事件放到过去,因为他们已经了解了很多过去,他们为此制作了一个长期的日历。只是将所有常规现象放在压延机上。
时间戳不是日历,它是一个时代。而且我相信玛雅人使用同样的观点制作了他们的长期日历。 (意思是他们知道他们与过去没有任何关系,他们只是需要更大规模地看到它)
是的,C(和它的家人)。这也是Java所采用的。