2009-06-25 4 views
4

클라이언트의 UI 업데이트를 작업하는 동안 모든 기사와 관련된 날짜가 하루 만에 마감되었음을 확인했습니다. 나는 내가 변경하는 동안 뭔가를 망쳤다는 것을 알았지 만, 확실한 것은, 나에게 이상한 결과를 주었던 작은 PHP 테스트 파일을 던졌다. 테스트 파일은 단지; , 1,246,053,600 변환 된 :다른 서버가 유닉스 타임 스탬프를 다른 날짜로 변환해야합니까?

유닉스 : 26/06/2009

을하지만 난 그것을 실행하면 내 로컬 호스트에 위의 코드를 실행하면

<?php 
$date = 1246053600; 
echo 'unix: ',$date,', converted: ',date('d/m/Y', $date); 
?> 

내가 얻을 프로덕션 서버 :

유닉스 : 1246053600 변환 : 01/06/2009

둘 사이의 일 차이점을 확인하십시오. 여기 무슨 일있어?! 확실하게 유닉스 타임 스탬프를 날짜로 바꾸는 데 서버 의존적 인 의존성이 없다?

답변

4

서버가 두 개의 다른 표준 시간대로 설정 될 수 있으며 1970 년 1 월 1 일 자정부터 시간 길이를 초로 해석합니다. GMT. 날짜는 하루 종일은 아니지만 하루 중 일부일 수도 있습니다. 자정 경계를 넘을 수 있습니다.

+0

을; 프로덕션 서버의 시간대 설정은 다음 날로 날짜를 범했습니다. – Mathew

1

이전에 비슷한 문제가있었습니다. 내 개발 컴퓨터에서 php.ini의 시간대가 프로덕션 서버와 다르다는 것을 알았습니다.

나는 그것을 조사 할만한 가치가 있다고 말하고 싶습니다.

4

당신이 제공하는 $ date 값은 UTC로 추정됩니다. 두 서버에서 use gmdate, you will get the same result 인 경우 그렇지 않으면 표시된 날짜와 시간이 서버의 시간대에 따라 조정됩니다. 당신은 분명 각 서버의 현재 설정을 확인하기 위해 시간대를 인쇄하기 위해 O (자본 오) 코드를 사용할 수 있습니다 : 그것은 정확히 밝혀졌다

echo 'unix: ',$date,', converted: ',date('d/m/Y O', $date);

+0

gmdate() 소개; 매우 편리! – Mathew

관련 문제