mktime 함수에 흥미로운 문제가 있습니다. 이전에 여기에 제공된 솔루션을 살펴 보았지만 아무도 해결되거나 도움이되지 않는 것으로 나타났습니다 (스트로 타임은 내가 보는 결과를 변경하지 않습니다).mktime의 날짜가 1969 년 12 월입니다.
나는 가능한 한 오류를 방지하기 위해 월간 보고서를 작성하고 있으므로 한 달과 1 년만을 요청하고 있습니다. 나는 그 보고서에서 가장 좋은 날을 코드에 제공 할 것이다.
내 양식에 달에 대한 드롭 다운 선택이 있고 그 달의 값은 두 자리 정수 (01, 02 등)입니다. 연도는 4 자리 숫자로 사용자가 직접 입력합니다.
모든 작품은 2038 년까지 훌륭합니다 ... 나도 알아, 그게 먼 길을 알지만,이 프로젝트는 20 년 범위가 있어야하고 지난 2 년 동안 문제가 발생했습니다. 그런 다음
$month = filter_var($_POST["month"], FILTER_SANITIZE_NUMBER_INT);
$year = filter_var($_POST["year"], FILTER_SANITIZE_NUMBER_INT);
, 내 일 (27 일)로 월과 연도를 결합한다 mktime를 사용 : $ 때문에, timeStamp = mktime은 (0,0 여기
내가 양식에서 정보를 수신하고있어 방법 , 0, $ month, 27, $ year);
그런 다음 MySQL을 좋아하는 날짜 형식의 변수에 할당합니다. $ reportdate = date ('Y-m-j', $ timeStamp);
나는 $ month와 $ year의 결과를 되풀이하여 올바르게 전달하지만 $ reportdate를 출력하면 항상 1969 년 12 월 31 일이라고합니다.
03
2038
1969-12-31
내가 선택한 달은 중요하지 않습니다. 2037 년 12 월 보고서는 완벽하게보고합니다.
고칠 수있는 것입니까 아니면 쿠키가 무너지는 것입니까?
예. 서명 된 int 대신 부호없는 int를 사용하십시오. – Johan
정수는 내부적으로 부호로 표시되므로 PHP에는 이러한 기능이 없습니다. – nickb
이것은 문서에도 설명되어 있습니다. http://php.net/manual/en/function.mktime.php – Dancrumb