2016-06-08 57 views
1

当时区UTC时间偏差发生变化时,PHP中是否有函数获取日期?例如:在特定时区UTC时间偏差发生变化时获取日期

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

它返回。

这:

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

回报。 通过运行这个我知道特定日期的UTC偏移量,但我不知道此UTC发生更改的确切日期。

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

+0

@JohnConde - 是的,请参阅下面的答案。 –

回答

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 
    ) 

你可以限制你想要的开始和结束的转换日期参数。

+0

谢谢,这正是我一直在寻找的。我编辑了你的答案,以当前年份的数组值显示。 – instead

相关问题