2011-11-04 42 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