2016-06-08 59 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

相關問題