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