2011-01-01 2 views
3

MySQL에서 NOW() 함수를 사용하여 현재 타임 스탬프를 잡으면 PHP를 통해 해당 필드를 잡고 다른 시간대에서 해당 시간을 제공 할 수 있습니까? 기본적으로 현재 시간대의 현재 시간을 다른 시간대로 변환합니까?PHP/MySQL 타임 스탬프 및 시간대

$gmt = new DateTimeZone("GMT"); 
$datetimeInGMT = new DateTime($now, $gmt); 

또한 형태 continent/city, 예를 들어,의 위치를 ​​취

답변

5

당신은 DateTimeZone 클래스를 사용할 수 있습니다 Europe/London. 당신의 날짜가 아닌 UTC 경우

, 당신은 setTimezone를 사용할 수 있습니다

$datetimeInGMT = new DateTime($now, new DateTimeZone("America/New_York")); 
$datetimeInGMT->setTimezone(new DateTimeZone("GMT")); 
+0

맞습니다. 다른 타임 존에 이미 타임 스탬프가 있다면 어떻게 될까요? 다른 시간대로 변환 할 수 있습니까? – John

+0

@ 존 내가 추가 한 새로운 코드를 사용해보십시오. – marcog

+0

+1 (만약 내가 할 수 있다면, 'DateTime'에 대해 또 다른 +1)이 작업을하는 것을 잊지 말고, 시작 날짜를 바로 잡기 위해 mySQL 서버의 현재 시간대를 알아야합니다! MySQL의 표준 시간대 설정은 시스템의 표준 시간대와 다를 수 있습니다. –

3

의 MySQL의 시간대 처리가 훨씬 더 정교한 PHP의보다. 그것은 간단한 표준 시간대 (동부 표준시, 태평양 표준시, 등) 및 내가 '지역 시간대'(아메리카/동부 표준시)라고 부를 것입니다. 지역 구역을 사용하면 DST 규칙이 수년에 걸쳐 변경된 경우에도 일광 절약 시간을 포함한 적절한 변환이 사용됩니다.

내가 한 모든 일은 MySQL 함수 UTC_TIMESTAMP()를 사용하여 모든 datetimes를 UTC로 저장하는 것입니다. 그런 다음 쿼리에서 MySQL 함수 CONVERT_TZ()를 대상 시간대에 사용합니다. http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

참고 : 시간대 테이블을 업데이트해야 할 수도 있습니다. http://dev.mysql.com/downloads/timezones.html

+1

PHP 5부터, PHP는 두 가지 중 더 정교합니다 :'DateTime' 클래스는 시간대를 완벽하게 지원합니다. 'DateTime' 타임 스탬프는 설정되고 어떤 영역으로 교차 변환 될 수 있습니다. MySQL은'DATETIME' 필드에 시간대 정보를 전혀 저장할 수 없습니다. 물론 CONVERT_TZ는 유효한 접근 방법입니다. –

+0

반드시 유효 할 필요는 없습니다. 이 질문에 대한 Aarons의 반응을 읽어보십시오. http://stackoverflow.com/questions/1646171/mysql-datetime-fields-and-daylight-savings-time-how-do-i-reference-the-extra –