2015-03-16 3 views
0

Я попытался преобразовать часовой пояс из UTC в ET. Он работает отлично в моем локальном хосте (Windows), но в Production (Linux server), когда я конвертирую UTC (13:20) к ET.File_date показывается как 9.20. Любая идея, почему она показывает неправильное время?Преобразование часового пояса из UTC в ET в PHP

  $original_datetime = date('Y-m-d H:i:s'); 

      $original_timezone = new DateTimeZone('UTC'); 

      $datetime = new DateTime($original_datetime, $original_timezone); 

      $target_timezone = new DateTimeZone('America/New_York'); 

      $datetime->setTimeZone($target_timezone); 

      $file_date = $datetime->format("m-d-Y g:i A"); 

ответ

1

Неточное время.

Восточное время и UTC находятся на расстоянии четырех часов. 1:20 PM в UTC - 9:20 в Восточное время США (ET). Итак, результаты, которые вы получаете в производстве, верны.

Пройдите этот код на своем локальном хосте и проверьте каждую из используемых вами переменных. Посмотрите, какой из них установлен неправильно. Тогда вы узнаете, где проблема.

Я подозреваю, что проблема заключается в том, что первая строка должна быть обращена к gmdate() вместо date(). gmdate() дает вам текущее время в GMT, но date() дает его вам по местному времени. Это может быть разницей, если ваш производственный сервер настроен на GMT/UTC по умолчанию.

Я хотел бы повторить, однако, что ваш локальный результат неверен, а не ваш результат производства. 9:20 AM - правильная конверсия 1:20 PM из UTC в America/New_York.

+1

«Восточное время и UTC - четыре часа друг от друга» - на данный момент. Они отстают на пять часов, когда соблюдается стандартное время. –

+0

Что появляется в 14:20? Время UTC или восточное время? –

+0

@ErickRobertson file_date отображается как 2.20PM в localhost и как 9.20 AM в производстве. – Learner2011

Смежные вопросы