如下:1970-01-01T00:00:00Z 可能是我们最常看到的格式了,这个表示的是一个 Epoch 韶光,实在也不完备一定是,由于在上面没有表示出毫秒。
关于上面的韶光格式解读如下:

完全的 ISO 8601 可以用下面的格式来表示 2021-08-13T14:20:18.992847200-04:00

在上面的格式中的 字母 T 请参考前面的阐明。
无字母 Z,如果没有字母 Z的话,该当利用的是 + 或者 - 符号,+ 表示的是东,比如说北京, - 表示的是 西部,比如 -04:00 表示的是西 5 区的美国东部韶光。在秒后面利用 点号 . 例如 上面的 .992847200 来表示纳秒,这个韶光是可以省略的。实在上面的韶光格式都是可以进行格式化,取部分数据,或者省略掉数据,如果省略的数据在初始化的时候就被添补 0 。
Epoch 韶光纪元(Epoch)是指具有历史意义的某一刻,实在便是一个参考点。
Unix 纪元是 Unix 或类 Unix 系统,一些C/C++,Java等编程措辞利用的纪元,从1970年一月一日00:00 开始。而其他的操作系统或者编程措辞,利用的便是不一样的纪元起始日期了,比如 Microsoft C/C++ 7.0 利用的是 1899年12月31日。
从 Unix 纪元(1970-01-01-00:00:00)便是Unix韶光的零点,往后的韶光是正的,而 Unix 纪元之前的韶光便是负值。
为什么 Unix 系统中纪元的韶光是 1970 年这个问题得去问 Unix 之父:Ken Thompson 和 Dennis Ritchie了,是他们选择这个韶光作为 Unix 系统的纪元韶光的。
初版的 Unix 程序员手册是 1971年11月份出版的,上面定义Unix韶光是:从1971年1月1日00:00:00开始,单位是一秒的六十分之一。
这意味在Unix韶光的最早版本中,韶光计数器以 60Hz 的频率(芯片的振荡器频率)递增,每隔 1/60 秒,计数器就加一。当时利用的整数计数器是 32 位的,这样 Unix 韶光能够表示的范围就非常受限了,2^32/60/3600/24/30/12 大约是 2.3年。
所往后来经由多次变动,频率变成了1Hz,纪元韶光改为了 1970年1月1日00:00:00。
有一种说法是Unix 操作系统出身于 1970 年,但实际上并不是的,在 1969 年旁边,Unix的观点就已经出身了,Unix 的最早版本已经出身了。Wired 网站上的一篇文章写道:Ritchie 说这个韶光实在是随意选择的,由于须要一个统一的日期来作为韶光的出发点,而1970年的元旦,看起来是最方便的。
2038 年问题2038 年问题又叫 Unix 千年臭虫或 Y2K38 缺点。在韶光值以带符号的 32 位整数来存储或打算的数据存储情形下,这个缺点就有可能引发问题。
可以用 Unix 带符号的 32 位整数韶光格式来表示的最新韶光是 2038年1月19日03:14:07UTC,这是1970年1月1日之后过了2147483647秒。过了那个韶光后,由于整数溢出,韶光值将作为负数来存储,系统会将日期读为1901年12月13日,而不是2038年1月19日。
用大略的措辞来说,Unix机器终极将会耗尽存储空间来列举秒数。以是,到那一天,利用标准韶光库的C 程序会开始涌现日期问题。
实在便是由于整数的最大计数在这一天会溢出,导致无法精确处理韶光。
觉得人类文明便是和韶光和存储过不去。








