2012-03-16 6 views
4

PHP 설명서와 StackOverflow도 검색했지만 내 질문에 대한 적절한 대답을 찾지 못했습니다. 내 날짜는 UTC로 저장됩니다. 지금 내가하는 일 :PHP DateTime DST

$date = new DateTime('2012-03-16 14:00:00', 'UTC'); 
$date->setTimezone('Europe/Budapest'); 

DateTime :: setTimezone()이 자동으로 DST를 설정합니까? 따라서 문자열을 형식화하면 여름철에는 15:00:00, 겨울철에는 16:00:00을 출력할까요? 또는 DST를 수동으로 설정해야합니까?

관련 질문, DST 독립적 UTC 시간 (내가 저장할 수 있음)을 얻으려면 다음과 같은 작업을 수행 할 예정입니까?

$date = new DateTime('now', 'UTC'); 
$date->format('Y-m-d H:i:s'); 

단순한 gmdate('Y-m-d H:i:s')을 사용 하시겠습니까?

+2

답변을 얻으실 수 있으니 꼭 사용해보십시오. –

+2

DST를 사용하지 않는 국가가 있습니다. 다른 PHP 버전에는 다른 Olson 데이터베이스가 있습니다. PHP 5.2와 5.3에서는 DateTime에 차이가있을 수 있습니다. 유지 관리 릴리스에서 수정 된 버그가있을 수 있습니다. 나는 단지 확신하고 싶었다. –

답변

5

귀하의 가정은 정확합니다.

또한 자신을 확인하는 데 10 초가 걸렸을 것입니다.

편집 :

올바른 구문은 다음과 같습니다 두 번째 질문에 관해서는

$date = new DateTime('2012-03-16 14:00:00', new DateTimeZone('UTC')); 

. DateTime 생성자에서 전달 된 시간대는 '참조'시간대입니다.

기본 시간대도 UTC (date_default_timezone_set)로 설정하지 않은 경우 UTC 시간대로 포맷하려면 setTimeZone (new DateTimeZone ('UTC'))을 호출해야합니다.

다음 번에 물어보기 전에 조금 더 힘들어보십시오.

+0

감사합니다. 맞습니다. 두 번째 인수는 DateTimeZone 객체 여야합니다. –