Наблюдает ли UTC летнее время?
Я пытаюсь написать script, где я хочу преобразовать любой часовой пояс в UTC
и наоборот.
Но от некоторых, где я узнал, что при преобразовании любого часового пояса в UTC
с учетом DST или без него он даст то же самое время 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 ..........
Является ли это причиной? Если да, то почему???
Пожалуйста, дайте мне свои ответы.
Ответы
Ответ 1
Нет, UTC никогда не имеет DST. Это постоянная система отсчета других часовых поясов, выраженная относительно.
Из страницы UTC в Википедии:
UTC не изменяется с изменением времен года, но местное время или гражданское время могут измениться, если юрисдикция часового пояса соблюдает летнее время или летнее время. Например, UTC на 5 часов опережает местное время на восточном побережье Соединенных Штатов в зимний период, но на 4 часа вперед в течение лета.
Другими словами, когда часовой пояс наблюдает за DST, его смещение от UTC изменяется, когда происходит переход на летнее время, но этот часовой пояс, наблюдающий DST, а не UTC.
Не зная о работе с часовым поясом PHP, мне кажется странным, что вы можете указать "с DST" или "без DST" в преобразовании - сами часовые пояса указывают, когда DST пинает... он не должен должен быть тем, что вы указываете сами.
Ответ 2
У меня такая же проблема, используя этот код:
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 настраивается на DST.
Интересно посмотреть, есть ли у кого-нибудь решение...
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
Надеюсь, что это поможет:)