2011-11-04 76 views
0

我需要將給定的GMT日期和時間(YYYY-MM-DD HH:MM)轉換爲表示東部海岸日期的字符串YYYYMMDD。你認爲下面的代碼是可以的嗎?EST/EDT到GMT的轉換和日期比較

$date='2011-11-07 04:30'; 
$date.='-4 hours'; 
$date=strftime('%Y-%m-%d %H:%M',strtotime($date)); 
$y=gmdate('Y'); 
$date2=date('Y-m-d 02:00',strtotime($y.'-03-01 second sunday')); 
$date3=date('Y-m-d 02:00',strtotime($y.'-11-01 first sunday')); 
if($date<=$date2||$date>=$date3) {  
    $date.='-1 hour'; 
    $date=strftime('%Y-%m-%d %H:%M',strtotime($date)); 
} 
$date=date('Ymd', strtotime($date)); 

回答

1

我建議不要試圖自己做計算。我們美妙的,不斷變化的時間標準帶來了太多的細微差別。相反,依靠PHP來執行計算,方法是使用php.net/date_default_timezone_set將時區設置爲GMT,然後使用strtotime()(或DateTime類)來獲取unix時間戳值。

一旦你的UNIX時間戳,再次使用php.net/date_default_timezone_set的時區設置爲美國/紐約和使用date()

+0

好,感謝意見。 – user965748