Наблюдает ли 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

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