Чи дотримується UTC літній час?


83

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

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

до UTC з переходом на літній та без літнього часу я отримаю ..

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

Це так? Якщо так, то чому ??? Будь ласка, будь-хто дайте мені ваші відповіді.


Якщо ви покажете нам сценарій, ми можемо допомогти вам трохи краще.
Kevin Lacquement

4
І, відповідаючи на ваше запитання щодо заголовка, жоден UTC не спостерігає переходу на літній час; проте інші зони можуть.
Kevin Lacquement

Відповіді:


137

Ні, сам UTC ніколи не має літнього часу. Саме постійною системою відліку інші часові пояси виражаються відносно.

На сторінці Вікіпедії UTC :

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

Іншими словами, коли часовий пояс спостерігає літній час, його зміщення від UTC змінюється, коли відбувається перехід на літній час, але це той часовий пояс, який спостерігає літній час, а не UTC.

Не знаючи багато про обробку часового поясу PHP, мені здається дивним, що ви можете вказати "з переходом на літній час" або "без переходу на літній час" під час перетворення - самі часові пояси вказують, коли починається перехід на літній час ... це не повинно бути те, що ви вказуєте самі.


1
"Не знаючи багато про обробку часового поясу PHP, мені здається дивним, що ви можете вказати" з переходом на літній час "або" без переходу на перехід на літній час "в перетворення" ... це, мабуть, тому, що ви не зробили багато програмованих гіперпосиланих макаронних виробів. Це мова зі вбудованою date_sunriseфункцією, яка повідомляє вам, коли сходить сонце. Я не впевнений, чи потрібен перехід на літній час для перетворення, але це першокласний громадянин об’єкта дати: php.net/manual/en/function.date.php .
Пол Дрейпер,

@PaulDraper: Бути першокласним громадянином об’єкта дати має певний сенс - просто не вказуючи його окремо для перетворення. З тих пір я дізнався трохи більше про деякі основні підпрограми C, і, підозрюю, вони мають багато спільного з цим ...
Джон Скіт,

1
Я думаю, що добре запитати, чи це літній час. Без додаткової інформації не можна переходити від місцевого часу + часового поясу до однозначного часу UTC. Це пов’язано з тим, що деякі локальні часи трапляються двічі під час переходу на літній час.
Том

@Tom: Я дуже добре знаю місцевий час, який трапляється двічі, але це не означає, що в самій конвертації є гарною ідеєю вказати, чи є місцевий час у літньому чи іншому часу. Краще - IMO - вказати спосіб вирішення двозначності, якщо вона неоднозначна. Я віддаю перевагу API, щоб не дозволяти вам висловлювати неможливі ситуації, такі як EDT у січні.
Джон Скіт,

1
Якщо вас бентежить, як робити часовий пояс у PHP, це тому, що PHP - це хаос, ось фантастичний опис того, чому php слід просто скасувати
Люсент Фокс

1

У мене така сама проблема, використовуючи цей код:

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 пристосовується до літнього часу.

Будь цікаво подивитися, чи є у кого рішення ...

РЕДАГУВАТИ:

Знайшов цей код на форумі, чудово працює !!

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

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

Сподіваюся, це допомагає :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.