1

I noticed something odd while using PHP's timezone_transitions_get(). The first element of the returned array seems to be this improbable/unuseable value, regardless of the timezone used:

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
        )
...

I've tried this with PHP 5.3 and 5.4. It seems to be independent of the version of PECL timezonedb used as well. Anyone know why this is happening?

4

1 回答 1

0

查看此文档以供参考timezone_transitions_get。显然,他们缺少以下细节:

[ts]值表示转换的时间戳,表示自 UTC 时间 1970 年 1 月 1 日午夜以来的微秒数。它存储为 64 位有符号整数,这-9223372036854775808是可能的最小值。

[time]值是与该值等效的 ISO8601 字符串[ts]。负年份看起来很有趣,尤其是数字很多的年份,但这确实是数学上的等价物。

将这些视为“时间的开始”。好吧,至少就计算机而言。:-)

[offset]值是由转换的 UTC 偏移量表示的整秒数。除以 3600,您将获得相同的小时数。

[isdst]值是一个布尔值(1或空白),指示偏移量是否表示夏令时。

[abbr]值是描述时区的简短缩写。 缩写可能是不明确的,所以它只是作为一个显示值,便于参考。什么都不应该被关闭。

于 2013-07-26T20:41:57.490 回答