时间的探索之旅 --- Java篇

Amos Xia, 2018-06-06 13:13:12

  • 不同的时间
  • 时区
  • 时间的表示方式

不同的时间

  • GMT
  • UTC
  • CST

GMT(Greenwich Mean Time), 格林尼治时间, 是英国伦敦的皇家格林威治天文台的标准时间, 因为它刚好在本初子午线经过的地方.

UTC(Coordinated Universal Time), 协调世界时

GMT是根据地球自转, 公转计算的(太阳每天经过英国伦敦皇家格林威治天文台的时间为中午12 点),不是非常准确, UTC是经过平均太阳时(以格林威治时间GMT为准), 地轴运动修正后的新时标, 以及以为单位的国际原子时所综合精算而成的时间.

UTC比GMT来得更加精准, 一般都使用UTC时间, 而且在使用时, 两者一般被认为是相同的表示方式.

CST(China Standard Time), 中国标准时间, 即UTC+8, 东八区时间

时区

人们规定以子午线为中心,向东西两侧延伸,每 15 度划分一个时区,刚好是 24 个时区。 然后因为一天有 24 小时,地球自转一圈是 360 度,360 度 / 24 小时 = 15 度/小时, 所以每差一个时区,时间就差一个小时。

新纪元时间(epoch)的起点为穿过格林威治天文台的本初子午线所处时区(0时区)的1970.1.1 00:00:00.

人类时间:

  • 本地时间, 基于本地时区的时间, 包括本地的日期和时间
  • 时区时间, 包括日期, 时间以及时区

时间的表示方式

  • 时间戳, 从新纪元时间(epoch)到现在的时间差, 一般用毫秒ms来度量
  • ISO 8601, 格式YYYY-MM-DDTHH:mm:ss.sssZ
  • RFC822/RFC1123, 格式Wed Mar 25 2015 09:56:24 GMT+0100

ISO 8601

T表示UTC时区, 如果使用空格且没有设置时区则为本地时区, 即系统设置的时区 Z表示的是UTC时区

时区判断的优先级: Z(指定时区) -> T(UTC) -> 本地

  • 如果Z指定了时区, 则时间为该时区的时间
  • 如果有T, 则为UTC时区, 即GMT+0时区
  • 如果都没有, 则为本地时区, 即系统设置的时区

Reference


知识共享许可协议
本作品采用知识共享署名 4.0 国际许可协议进行许可。


Copyright© 2018 s2u2m