我需要将给定的GMT日期和时间(YYYY-MM-DD HH:MM)转换为表示东海岸日期的字符串YYYYMMDD。你认为下面的代码是否正常?
$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));
答案 0 :(得分:1)
我建议不要自己尝试进行计算。我们精彩,不断变化的时间标准有太多细微差别。相反,依靠PHP来执行计算,使用php.net/date_default_timezone_set将您的时区设置为GMT,然后strtotime()
(或DateTime
类)以获取unix-timestamp值。
获得unix时间戳后,再次使用php.net/date_default_timezone_set将时区设置为America / New_York并使用date()