나는 사용자가 일정을 제공하는 사이트를 가지고 있지만, 2014 년 4 월 12 일과 같은 연도를 입력하면 과거의 날짜 (1969 년)를 얻습니다. 이를 확인하고 기본 최대 안전한 날짜를 적용하려면 어떻게해야합니까?날짜가 유효한 날짜이며 2038 년을 초과하지 않는 방법을 찾는 방법은 무엇입니까?
감사합니다.
나는 사용자가 일정을 제공하는 사이트를 가지고 있지만, 2014 년 4 월 12 일과 같은 연도를 입력하면 과거의 날짜 (1969 년)를 얻습니다. 이를 확인하고 기본 최대 안전한 날짜를 적용하려면 어떻게해야합니까?날짜가 유효한 날짜이며 2038 년을 초과하지 않는 방법을 찾는 방법은 무엇입니까?
감사합니다.
는 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
);
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)
더 많은 단어를 사용하려면 "타임 스탬프로 작업하지 마십시오"라는 의미입니다. :) –
고든 고마워, 나는이 datetime 클래스 주위에 내 머리를 얻으려고 노력하고있어. – user187580
@ user187580 수업에 불편 함이 느껴지는 경우를 대비해 동등한 절차를 사용할 수도 있습니다. 예를 들어'date_create','date_format' 등 – Gordon