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
)
您可以使用开始日期和结束日期参数限制所需的过渡。