0

我需要将给定的 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));
4

1 回答 1

1

我建议不要尝试自己进行计算。我们美妙的、不断变化的时间标准有太多的细微差别。相反,依靠 PHP 执行计算,方法是使用 php.net/date_default_timezone_set 将您的时区设置为 GMT,然后strtotime()(或DateTime类)获取 unix-timestamp 值。

获得 unix 时间戳后,再次使用 php.net/date_default_timezone_set 将时区设置为 America/New_York 并使用date()

于 2011-11-04T18:45:56.647 回答