我在使用PHP的timezone_transitions_get()
时发现了一些奇怪的东西。无论使用何种时区,返回数组的第一个元素似乎都是这个不太可能/不可用的值:
php -r 'print_r(timezone_transitions_get(new DateTimeZone("GMT")));'
Array
(
[0] => Array
(
[ts] => -9223372036854775808
[time] => -292277022657-01-27T08:29:52+0000
[offset] => 0
[isdst] =>
[abbr] => UTC
)
)
php -r 'print_r(timezone_transitions_get(new DateTimeZone("US/Pacific")));'
Array
(
[0] => Array
(
[ts] => -9223372036854775808
[time] => -292277022657-01-27T08:29:52+0000
[offset] => -25200
[isdst] => 1
[abbr] => PDT
)
...
我已经尝试过PHP 5.3和5.4。它似乎与PECL timezonedb的版本无关。任何人都知道为什么会这样吗?
答案 0 :(得分:0)
请查看this documentation以获取timezone_transitions_get
的参考。显然,他们缺少以下细节:
[ts]
值表示转换的时间戳,自UTC 1970年1月1日午夜以来微秒的数量。它存储为64位有符号整数,-9223372036854775808
是可能的最小值。
[time]
值是等效于[ts]
值的ISO8601字符串。负面年份看起来很有趣,特别是那些有很多数字的数字,但这确实是数学等价物。
将这些视为“时间的开始”。好吧,至少就计算机而言。 : - )
[offset]
值是转换的UTC偏移量表示的整秒数。除以3600,您将获得相同的小时数。
[isdst]
值是布尔值(1
或空白),表示偏移量是否代表夏令时。
[abbr]
值是描述时区的简短缩写。 Abbreviations can be ambiguous,因此它只是作为显示值存在并且易于参考。什么都不应该被限制。