Mat*_*lls 407
早期版本的unix以1/60秒的间隔测量系统时间.这意味着32位无符号整数只能表示小于829天的时间跨度.因此,必须在最近的过去设定由数字0(称为纪元)表示的时间.由于这是在20世纪70年代早期,时代被设定为1971-1-1.
之后,系统时间被改变为每秒递增,这增加了可以用32位无符号整数表示的时间跨度到大约136年.因为将每一秒挤出柜台已经不再那么重要了,所以时代逐渐缩小到最近的十年,从而成为1970-1-1.必须假设这被认为比1971-1-1有点整洁.
请注意,使用1970-1-1作为其纪元的32位有符号整数可以表示直到2038-1-19的日期,在该日期它将回绕到1901-12-13.
http://en.wikipedia.org/wiki/Unix_time#History解释了一下Unix时间和所选时代的起源.unix时间和纪元日期的定义经历了一些变化,然后才稳定现在的状态.
但它没有说明为什么最终选择了1970年1月1日.
来自维基百科页面的着名摘录:
的第一版本的Unix程序员手册日1971年11月3日的Unix时间定义为"由于00:00:00的时间,1年1月,1971年,在第二的六十分测量".
由于[有限范围] ,在将速率改变为1Hz并且将纪元设定为其当前值之前,不止一次地重新定义了纪元.
几个后来的问题,包括当前定义的复杂性,是因为Unix时间已经逐渐被使用定义而不是完全定义为开始.
一个划时代的参考日期是从我们统计的时间在时间轴上的一个点。该点之前的时刻以负数计算,之后的时刻以正数计算。
为什么 1970 年 1 月 1 日 00:00:00 被认为是纪元时间?
不,不是的时代,一个时代。有许多时代在使用。
这种时代的选择是任意的。
主要的计算机系统和图书馆使用至少几十个不同时代中的任何一个。最受欢迎的时代之一通常被称为Unix Time,使用您提到的 1970 UTC 时刻。
虽然很受欢迎,但 Unix Time 的 1970 可能不是最常见的。最常见的还有 1900 年 1 月 0 日,无数 Microsoft Excel 和 Lotus 1-2-3 电子表格,或 2001 年 1 月 1 日,Apple 的 Cocoa 框架在全球超过 10 亿台 iOS/macOS 机器中的无数应用程序中使用。或者也许是GPS设备使用的 1980 年 1 月 6 日?
不同的系统在计数时间上使用不同的粒度。
甚至所谓的“Unix 时间”也各不相同,有些系统计算整秒,有些系统计算毫秒。许多数据库如 Postgres 使用微秒。有些人,如现代java.time在Java中8框架和后,利用纳秒。有些还使用其他粒度。
因为在使用纪元参考和粒度方面存在很大差异,所以通常最好避免将时刻作为纪元计数。在时代和粒度的模糊性以及人类无法感知有意义的值(因此错过错误值)之间,使用纯文本而不是数字。
在ISO 8601标准提供了一套丰富的实践精心设计的格式表示日期时间值作为文本。这些格式很容易被机器解析,也很容易被跨文化的人类阅读。
这些包括:
2019-01-232019-01-23T12:34:56.123456Z2019-01-23T18:04:56.123456+05:302019-234 | 归档时间: |
|
| 查看次数: |
176893 次 |
| 最近记录: |