2011-08-18 4 views
1

일광 절약 시간 중에 PHP 스크립트 (time())를 통해 시간을 가져 오는 경우 1 시간 후 시간 값이 반환 된 것으로 보입니다. 일광 절약 시간을 고려한 올바른 시간을 얻을 수있는 방법이 있습니까?PHP에서 현재 시간을 검색 할 때 일광 절약 시간을 어떻게 계산합니까?

+0

참조 : [간단한 PHP 시간대/일광 절약 질문] (http://www.phpfreaks.com/forums/index.php?topic=223035.0) – feeela

+0

당신과 PHP의 시간대 설정을 얻을 수 있습니다' date ('e')'및/또는'date_default_timezone_get()'. –

답변

2

time()은 유닉스 타임 스탬프를 반환하고 유닉스 타임 스탬프는 유닉스 에포크 (Epoch) 이후의 초 단위의 고정 된 시간입니다. 시간대의 영향을받지 않습니다. 당신이 바로 그 순간이되면

, 당신은 주어진 장소에서 현지 시간을 계산 할 수 있습니다 :

<?php 

$now = time(); 
echo $now . PHP_EOL; 

date_default_timezone_set('Europe/Madrid'); 
echo date('r', $now) . PHP_EOL; 

date_default_timezone_set('Asia/Tokyo'); 
echo date('r', $now) . PHP_EOL; 

... 같은 타임 스탬프에 대해 서로 다른 지역의 날짜를 출력 할 것이다 :

1313683738 
Thu, 18 Aug 2011 18:08:58 +0200 
Fri, 19 Aug 2011 01:08:58 +0900 

반대 논리 연산에도 동일한 추론이 적용됩니다.

<?php 

date_default_timezone_set('Europe/Madrid'); 
$then = mktime(23, 55, 30, 12, 31, 2000); 
echo $then . PHP_EOL; 

date_default_timezone_set('Asia/Tokyo'); 
$then = mktime(23, 55, 30, 12, 31, 2000); 
echo $then . PHP_EOL; 

... 인쇄가 다릅니다. 천만에 타임 스탬프 :

978303330 
978274530 
0

time()은 유닉스 타임 스탬프 형식의 OS 시간을 가져옵니다. 당신은 PHP로 이것을 바로 잡을 수 있지만 imho는 OS 레벨에서의 수정을 고려해야합니다.

0

이 될 "은"대답하지만, 로컬 서버 시간이 수 없습니다 사용하여 설정 올바른 시간대 당신의 공급자가 잘못 관리해야합니다. 시간 정보 사용에 대한 컨텍스트를 알 수는 없지만 이러한 정보를 사용할 때마다 UTD/GMT를 사용하려고 시도합니다. 사용자가 전 세계 또는 단일 국가에 퍼져 있다면 시간을 정류하는 것이 악몽 일 수 있습니다. 파일 저장 시간, 로그 시간 또는 기타 용도를 나타내는 것은 UDT/GMT로 합리적으로 수행 할 수 있습니다.

+0

UTD/GMT 시간 또는 UDT/GMT 시간이란 무엇입니까? 아마도 UTC/GMT 시간을 의미할까요? 아니면 다른 것입니까? –

관련 문제