2014-12-10 1 views
1

유닉스 시대의 끝을 확인하기로 결정 했으므로 달력에서 2038 년 이상으로 날짜를 변경합니다.PHP 왜 new DateTime ('now')가 2038 년 이후 1970 년을 반환하는지

$now = new DateTime('now'); echo $now->format('Y-m-d'); 

RETURNS 1970-01-01 : 나는를 surprized!

$now = new DateTime(); 

와 동일한 결과가 나오며 PHP 5.4가 반환됩니다. 그러나 :

$now = new DateTime('9000-10-01'); 

은 9000-01-01을 반환합니다. DateTime을 사용하여 2038 년 이후에 현재 날짜를 얻는 방법은 무엇입니까?

내 OS : winxp x32 및 php 5.3/5.4 x86.

+1

http://en.wikipedia.org/wiki/Year_2038_problem –

+3

64 비트 시스템과 5.2 이상으로 이동하면 2038을 넘어서게됩니다. –

답변

1

"DateTime을 사용하여 2038 년 이후에 현재 날짜를 얻는 방법"

전 64 비트 스택과 OS를 사용하는 것이 좋습니다. 그리고 유닉스 타임 스탬프 컨벤션은 유닉스/리눅스에서만 사용되지 않습니다.

좋은 예로서 php time function을 참조하십시오. 이 함수는 32 비트 정수만 사용하는 경우 2038 년 이후의 날짜에 결과를 제공 할 수 없습니다.

+0

맞습니다. PHP는 x64 같은 문제가되지 않습니다. 이것은 PHP x86에서만 문제입니다 (Windows 7 x64에서도). – user3551026

관련 문제