2010-04-30 2 views

답변

5

DateTime 클래스를 시도

$dt = new DateTime('2099-01-01'); 
$dt->setTime(23,59); 
$dt->add(new DateInterval('P10D')); 
echo $dt->format('Y-m-d H:i:s'); // 2099-01-11 23:59:00 

하지 날짜 시간이 정수 대신 타임 스탬프를 저장하기 위해 내부적으로 사용하는 것을 확인하십시오. 그러나 정수는 플랫폼에 따라 PHP_INT_MAX 값으로 제한됩니다. 당신은 'U'(타임 스탬프)로 날짜를 포맷하고 date()에 전달하여이를 테스트 할 수 있습니다

echo date('Y-m-d H:i:s', $dt->format('U')); // 1962-12-06 17:30:44 

DateTime 올바른 타임 스탬프를 반환하지만 date가 작동하지 않을 수있는 방법을 공지 사항 :

var_dump(
    $dt->format('U'),       // 4071855540 
    date('U', $dt->format('U')),    // -223111756 
    PHP_INT_MAX,        // 2147483647 
    PHP_INT_MAX+1,        // -2147483648 
    date('Y-m-d H:i:s', PHP_INT_MAX),   // 2038-01-19 04:14:07 
    date('Y-m-d H:i:s', PHP_INT_MAX+1)  // 1901-12-13 21:45:52 
); 
+1

더 많은 단어를 사용하려면 "타임 스탬프로 작업하지 마십시오"라는 의미입니다. :) –

+0

고든 고마워, 나는이 datetime 클래스 주위에 내 머리를 얻으려고 노력하고있어. – user187580

+0

@ user187580 수업에 불편 함이 느껴지는 경우를 대비해 동등한 절차를 사용할 수도 있습니다. 예를 들어'date_create','date_format' 등 – Gordon

0

mktime 기능을 사용할 수 있습니다. Fri, 13 Dec 1901 20:45:54 GMT에서 Tue, 19 Jan 2038 03:14:07 GMT까지 날짜가 제공되면 기원에서 # 초를 반환하고 그렇지 않으면 false을 반환합니다.

var_dump(mktime(0, 0, 0, 1, 19, 2038)); // int(2147472000) 
var_dump(mktime(0, 0, 0, 1, 20, 2038)); // bool(false) 
관련 문제