UTC는 일광 절약 시간을 준수합니까?


83

시간대를 변환하거나 UTC반대로 변환하려는 스크립트를 작성하려고합니다 . 그러나 일부 시간대를 UTC DST 고려 여부와 상관없이 시간대를 변환하는 동안 동일한 UTC시간 을 제공 한다는 것을 알게 된 곳에서 . 예를 들어 : 내가 이것을 변환하려고하면 :

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

DST를 사용하고 DST를 사용하지 않고 UTC로 변환하면 ..

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

이 corect입니까 ?? 그렇다면 왜 ??? 누구든지 대답 해주세요.


대본을 보여 주시면 좀 더 잘 도와 드리겠습니다.
Kevin Lacquement 2011 년

4
그리고 제목 질문에 대한 답으로 UTC는 일광 절약 시간을 준수하지 않습니다. 그러나 다른 영역은 가능합니다.
Kevin Lacquement 2011 년

답변:


140

아니요, UTC 자체에는 DST가 없습니다. 다른 시간대가 상대적으로 표현되는 기준의 상수 프레임입니다.

로부터 위키 백과 UTC 페이지 :

UTC는 계절의 변화에 ​​따라 변경되지 않지만, 시간대 관할 구역에서 일광 절약 시간 또는 서머 타임을 준수하는 경우 현지 시간 또는 시민 시간이 변경 될 수 있습니다. 예를 들어 UTC는 겨울에는 미국 동부 해안의 현지 시간보다 5 시간 빠르지 만 여름에는 4 시간 빠릅니다.

즉, 시간대가 DST를 관찰 할 때 DST 전환이있을 때 UTC로부터의 오프셋이 변경되지만 이는 UTC가 아니라 DST를 관찰 하는 시간대 입니다.

PHP 시간대 처리에 대해 많이 알지 못하는 경우 변환에서 "DST 포함"또는 "DST 제외"를 지정할 수 있다는 것이 이상해 보입니다. 시간대 자체가 DST가 시작되는시기를 지정합니다. 그럴 필요는 없습니다. 당신이 직접 지정하는 것.


1
"PHP 시간대 처리에 대해 많이 알지 못했지만 변환에서 'with DST'또는 'without DST'를 지정할 수 있다는 것이 이상해 보입니다."... 아마도 프로그래머블 하이퍼 링크 파스타를 많이 수행하지 않았기 때문일 것입니다. date_sunrise해가 뜨면 알려주는 기능 이 내장 된 언어입니다 . 변환에 DST가 필요한지 확실하지 않지만 날짜 객체의 일류 시민입니다 : php.net/manual/en/function.date.php .
Paul Draper

@PaulDraper : 날짜 개체의 일류 시민이되는 것은 변환을 위해 별도로 지정하지 않고 어느 정도 의미가 있습니다. 나는 이후 그러나, 좀 더 기본 C 루틴의 일부에 대해 배웠어요, 난 ... 사람들이 함께 할 수있는 여지가 의심
존 소총을

1
DST인지 물어봐도 괜찮다고 생각합니다. 추가 정보 없이는 localtime + timezone에서 명확한 UTC 시간으로 이동할 수 없습니다. 이는 일부 현지 시간이 DST에서 전환되는 동안 두 번 발생하기 때문입니다.
Tom

@Tom : 현지 시간이 두 번 발생한다는 것을 잘 알고 있지만 변환 자체에서 현지 시간이 DST인지 여부를 지정하는 것이 좋은 생각은 아닙니다. 모호한 경우 모호성을 해결하는 방법을 지정하는 것이 IMO 입니다. 1 월의 EDT와 같이 불가능한 상황을 표현할 수 없도록 API를 선호합니다.
Jon Skeet

1
PHP에서 시간대를 수행하는 방법에 대해 혼란 스러우면 PHP가 엉망이기 때문입니다. 여기에 PHP를 폐기해야하는 이유에 대한 환상적인 글이 있습니다. eev.ee/blog/2012/04/09/php-a-fractal- of-bad-design
Lucent Fox

2

이 코드를 사용하여 동일한 문제가 있습니다.

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

지금은 여름이고이 코드가 생성하는 시간은 한 시간 늦습니다. 따라서 PHP의 UTC 시간이 DST로 조정되지 않는다고 생각합니다.

누군가가 해결책을 가지고 있는지 흥미로워하십시오 ...

편집하다:

포럼에서이 코드를 찾았고 완벽하게 작동합니다 !!

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

따라서 $ TIME을 사용하여 현재 날짜와 시간을 호출 할 수 있습니다. date () 태그 내부의 비트를 변경하여 출력을 다르게 표시하도록 조정할 수 있습니다. date () 출력을 조정하려면 다음 가이드를 사용하십시오. http://php.net/manual/en/function.time.php

도움이 되었기를 바랍니다 :)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.