获取特定时区的UTC偏移变化的日期

时间:2016-06-08 19:05:20

标签: php date datetime timezone

PHP中是否有函数来获取时区UTC偏移量发生变化的日期?例如:

$date1 = new DateTime('27.03.2016 03:00:00', new DateTimeZone('Europe/Warsaw') );
echo $date1->getOffset();

返回 7200

而且:

$date2 = new DateTime('27.03.2016 01:00:00', new DateTimeZone('Europe/Warsaw') );
echo $date2->getOffset();

返回 3600 。 通过运行此我知道特定日期的UTC偏移量,但我不知道此UTC发生变化的确切日期。

当然,我可以在一年中的所有日子循环(精确分钟),并找出具体的时间但是...... PHP知道这个日期,我认为必须有一种方法 - 简单的功能来获得它! 无法找到任何内容:http://php.net/manual/en/book.datetime.php

1 个答案:

答案 0 :(得分:2)

您可以使用DateTimeZone::getTransitions()

$timezone = new DateTimeZone("Europe/Berlin");
print_r($timezone->getTransitions());

将打印如下内容:

[101] => Array
    (
        [ts] => 1445734800
        [time] => 2015-10-25T01:00:00+0000
        [offset] => 3600
        [isdst] => 
        [abbr] => CET
    )

[102] => Array
    (
        [ts] => 1459040400
        [time] => 2016-03-27T01:00:00+0000
        [offset] => 7200
        [isdst] => 1
        [abbr] => CEST
    )

[103] => Array
    (
        [ts] => 1477789200
        [time] => 2016-10-30T01:00:00+0000
        [offset] => 3600
        [isdst] => 
        [abbr] => CET
    )

[104] => Array
    (
        [ts] => 1490490000
        [time] => 2017-03-26T01:00:00+0000
        [offset] => 7200
        [isdst] => 1
        [abbr] => CEST
    )

您可以使用开始和结束日期参数限制所需的过渡。