EST / EDT в GMT конвертация и сравнение дат - PullRequest
0 голосов
/ 04 ноября 2011

Мне нужно преобразовать данную дату и время по Гринвичу (ГГГГ-ММ-ДД ЧЧ: ММ) в такую ​​строку ГГГГММДД, представляющую дату на восточном побережье.Как вы думаете, код ниже в порядке?

$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 Ответ

1 голос
/ 04 ноября 2011

Я бы посоветовал не пытаться делать вычисления самостоятельно. В нашем замечательном, постоянно меняющемся стандарте времени слишком много нюансов. Вместо этого используйте PHP для выполнения вычислений, используя php.net/date_default_timezone_set, чтобы установить часовой пояс GMT, затем strtotime() (или класс DateTime), чтобы получить значение unix-timestamp.

Получив метку времени Unix, снова используйте php.net/date_default_timezone_set, чтобы установить часовой пояс America / New_York, и используйте date()

...