【发布时间】:2015-12-18 01:31:59
【问题描述】:
为什么 PHP 的 DateTimeZone::listIdentifiers() 函数列出 UTC 而不是 GMT。?
GMT 是一个时区,而 UTC 是http://www.timeanddate.com/time/gmt-utc-time.html 的标准
【问题讨论】:
为什么 PHP 的 DateTimeZone::listIdentifiers() 函数列出 UTC 而不是 GMT。?
GMT 是一个时区,而 UTC 是http://www.timeanddate.com/time/gmt-utc-time.html 的标准
【问题讨论】:
实际上,它列出了两者,以及同一事物的其他几个名称:
GMT GMT+0 GMT-0 GMT0 UTC UCT
Etc/GMT Etc/GMT+0 Etc/GMT-0 Etc/GMT0 Etc/UTC Etc/UCT
Greenwich Universal Zulu
Etc/Greenwich Etc/Universal Etc/Zulu
您可以查看PHP's list,或the generic tzdb list on Wikipedia。
TZDB(它们的来源)中的规范形式是 "Etc/UTC",但 canonical 的定义可能因每个消费者而异。例如,CLDR 根据其规则认为 "Etc/GMT" 是规范的。其他系统可能会定期使用"UTC" 或"GMT"。这四个是主要的,其余的主要是出于向后兼容性的原因,通常应该避免使用。
至于为什么这些术语可以互换使用,这是因为在我们现代使用它们时,它们的所有意图和目的都是相同的。见UTC vs GMT on my blog。
总的来说,这是我有根据的意见:
当专门指英国时区中非夏令时的部分时使用GMT(在夏令时使用BST),或在冰岛等地全年使用(除非它们在本地使用不同的约定)。
在英国语境中使用GMT,例如BBC 如何在GMT 中宣布时间。
在时区偏移中首选UTC,尤其是在完全限定的情况下,例如UTC-08:00 或UTC+05:30。 可接受使用带有全小时偏移量的短格式GMT,例如GMT+2 或GMT-5,但仍应避免使用它们(恕我直言),因为它们缺乏精确性。此外,大多数定义不同国家时区的法律文件均指协调世界时,即 UTC,而不是 GMT。
在所有其他情况下,当不确定时,首选UTC。
The timeanddate.com article 你指的没有错——这只是解释和观点的问题。从术语的角度来看,GMT 是一个时区,而 UTC 是一个计时系统是完全正确的。
我会给你上一堂简短的历史课:
GMT 最早发明,最初定义为英国格林威治天文台观测到的平均太阳时。从字面上看,这意味着通过望远镜检查恒星的位置,做一些数学运算来计算地球的旋转速度和位置,并根据结果手动设置时钟。这最终变得更加自动化,产生了UT1 标准,
UTC 出现得较晚,并以更科学的精度定义。 UTC 基于TAI atomic clock standard,加上定期插入的leap seconds,以使其在 UT1 的 0.9 秒内保持对齐。
随着 UTC 的采用,GMT 最终在民用环境中成为 UTC 的意思。今天,当您听到 GMT 一词时,它与 UTC 的值相同。 GMT 本身不再精确定义。
还值得一提的是,GMT 最初认为“一天”从中午开始,而不是午夜。我们很少再这样做了,包括我们使用“GMT”一词时。
Wikipedia's article on GMT has a lot more of the history if you are interested.
【讨论】: