时区格式的差异?应该首选一种格式吗?

Differences in timezone format? Should one format be preferred?

每次我为服务器或 PHP 设置时区格式时,我都对冗余选项的数量感到困惑,例如:

American/Los_Angeles
US/Pacific
Etc/GMT-8

这些似乎都给出了相同的结果。一种格式应该优于另一种格式吗?有什么不同吗?

America/Los_Angeles(不是“American”)是美国太平洋时区的首选 IANA 时区标识符。您可能应该使用这个,因为它是时区数据库中规范的“时区”条目。

US/Pacific 是同一时区的别名。它采用较旧的样式,从时区数据库使用国家名称作为前缀而不是更大的区域(大陆和海洋)开始。如果你愿意,你可以继续使用这个,因为它是时区数据库中的一个“Link”,它指向 America/Los_Angeles.

Etc/GMT-8 对于美国太平洋时区不正确。它是 UTC+8 固定偏移量的管理标识符。它不包含有关夏令时的任何信息。另请注意,偏移量与我们通常使用的 ISO-8601 偏移量相反。所以 Etc/GMT-8 有一个固定的偏移量 UTC+8。一般来说,Etc/GMT* 区域只应在非常特殊的情况下使用,例如在国际水域的海上船舶计时。

您可能还想阅读维基百科上的 time zone database and refer to the list of time zones