获取特定时区中 UTC 偏移量更改的日期



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

您可以使用以下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
    )

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

相关内容

  • 没有找到相关文章

最新更新