UTC соблюдает летнее время? - PullRequest
72 голосов
/ 31 марта 2011

Я пытаюсь написать скрипт, в котором я хочу преобразовать любой часовой пояс в UTC и наоборот.Но откуда-то я узнал, что при преобразовании любого часового пояса в UTC с учетом летнего времени или без него это даст одинаковое UTC время.Например: если я попытаюсь преобразовать это:

$mytime = '2011-03-31 05:06:00.000';
$myzone = 'America/New_York';

в UTC с DST и без DST, я получу ..

(New_York->UTC DST=Yes)2011-03-31 09:06:00
(New_York->UTC DST=No)2011-03-31 09:06:00 ..........

Это corect ?? Если да, тоЗачем???Пожалуйста, кто-нибудь, дайте мне ваши ответы.

Ответы [ 2 ]

120 голосов
/ 31 марта 2011

Нет, в самом UTC никогда не бывает летнего времени. Это постоянная система отсчета, другие часовые пояса выражаются относительно.

Со страницы Википедии UTC :

UTC не меняется со сменой сезонов, но местное или гражданское время может измениться, если юрисдикция часового пояса соблюдает переход на летнее или летнее время. Например, UTC на 5 часов опережает местное время на восточном побережье Соединенных Штатов зимой, но на 4 часа вперед летом.

Другими словами, когда часовой пояс соблюдает DST, его смещение относительно UTC изменяется при переходе на летнее время, но это этот часовой пояс , наблюдающий летнее время, а не UTC.

Не зная много об обработке часового пояса PHP, мне кажется странным, что вы можете указать "с DST" или "без DST" в конвертации - сами часовые пояса указывают, когда DST запускается ... это не должно должно быть что-то, что вы указываете сами.

1 голос
/ 30 июля 2013

У меня та же проблема, с использованием этого кода:

date_default_timezone_set('UTC');
$nowdate = date('l jS \of F Y h:i:s A');
echo "Current date and time is: " . $nowdate;

Сейчас лето, и время, которое производит этот код, отстает на один час - поэтому я не думаю, что время UTC в PHP настраивается на летнее время.

Интересно посмотреть, есть ли у кого-нибудь решение ...

EDIT:

Нашел этот код на форуме, отлично работает !!

date_default_timezone_set('Europe/London');
$TIME =  date("m/d/Y H:i",time());

Таким образом, вы можете вызвать текущую дату и время, используя $ TIME. Выходные данные можно настроить для отображения по-разному, изменив бит внутри тега date (). Если вы хотите настроить вывод даты (), используйте это руководство: http://php.net/manual/en/function.time.php

Надеюсь, это поможет:)

...