Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么日期从1970年1月1日算起?_Java_Python_Programming Languages - Fatal编程技术网

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

Java 为什么日期从1970年1月1日算起?,java,python,programming-languages,Java,Python,Programming Languages,使用日期(1970年1月1日)作为时间操纵的默认标准有什么原因吗?我在Java和Python中都看到了这个标准。我知道这两种语言。还有其他流行语言遵循相同的标准吗 请描述。这是 Unix时间或POSIX时间是一种用于描述时间点的系统,定义为自1970年1月1日午夜前协调世界时(UTC)以来经过的秒数,不包括闰秒 是的,C(及其家族)。这也是Java的发展方向。1970年1月1日00:00:00上午是生命的零点 使用日期(1970年1月1日)作为时间操纵的标准有什么原因吗 没什么重要的 Pytho

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

请描述。

这是

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


是的,C(及其家族)。这也是Java的发展方向。

1970年1月1日00:00:00上午是生命的零点

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

没什么重要的

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

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

除了实际的程序员,没有人知道为什么会做出这样的决定

而且

选择日期的原因无关紧要。就是这样

天文学家使用他们自己的划时代日期:

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

在一般情况下,一个远在过去的日期可以避免负数

一些更聪明的软件包使用了公历1年。第一年有什么原因吗?
在历法计算之类的书中有一个原因:它在数学上稍微简单一点


但是如果你仔细想想,1/1/1和1/1/1970之间的差异只是1969年,一个微不足道的数学偏移量

Q)为什么日期从1970年1月1日算起

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

他们知道如果他们把它放在太远的过去会带来问题,如果它是在未来,他们知道它会带来负面的结果。过去没有必要更深入,因为事件很可能发生在未来

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


时间戳不是日历,它是一个纪元。我相信玛雅人也用同样的观点制定了他们的长期日历。(这意味着他们非常清楚他们与过去没有任何关系,他们只是需要从更大的角度来看过去)

为什么总是1970年1月1日,因为--“1970年1月1日”通常被称为“纪元日期”,是Unix计算机的时间开始的日期,时间戳被标记为“0”。自该日期起的任何时间都是根据经过的秒数计算的。简单地说。。。任何日期的时间戳都将是该日期与“1970年1月1日”之间的秒差。时间戳只是一个整数,从“1970年1月1日午夜”的数字“0”开始,随着UNIX时间戳转换为PHP和其他开放源代码语言提供的可读日期的每一秒,时间戳将递增“1”功能

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

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

  • 自1970年以来,计算机中的所有时间跟踪都是作为计数进行的
  • 这种跟踪是标准的
二十年 计算时间并非总是从1970年初开始跟踪。虽然这很流行,但几十年来各种计算环境至少使用了近20种方法。有些来自其他世纪。其范围从0年(零)到2001年

这里有一些

公元前1年1月0日

公元1年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日

二○○○年一月一日

二○○一年一月一日

Unix时代很普遍,但不占主导地位 1970年初很流行,可能是因为Unix使用了它。但这绝不是占主导地位。例如:

  • 无数(数十亿?)的Microsoft Excel和Lotus 1-2-3文档使用1900年1月0日(1899年12月31日)的
  • 现在全世界都在使用格林尼治标准时间2001年1月1日的标准时间
  • 卫星导航系统使用1980年1月6日的
ISO 8601 假设自epoch使用Unix epoch以来有一个计数,则会为bug打开一个很大的漏洞。这样的计数对于人类来说是不可能立即破译的,所以在调试和记录时,错误或问题不会很容易被标记出来。另一个问题是下面解释的粒度的模糊性

我强烈建议将日期时间值序列化为数据交换的明确字符串,而不是从epoch开始的整数计数:
YYYY-MM-DDTHH:MM:SS.SSSZ
,例如
2014-10-14T16:32:41.018Z

从那个时代开始算什么 自历元时间跟踪以来计数的另一个问题是时间单位,通常使用至少四个级别的分辨率


  • 最初的Unix工具使用整秒,如果存储为32位整数,则会导致自1970年以来达到秒数限制时的错误

  • 由较旧的Java库使用,包括捆绑的Java.util.Date类和库

  • 由数据库使用,例如

  • 由Java 8中的新用户使用

接下来是另一种流行语言