반응형
Web Development · PHP checkdate
PHP checkdate —
날짜가 실제로 존재하는지 검사
2014년 2월 31일은 존재하지 않는다 — checkdate가 false 반환
시작 오늘 분석할 코드
<?php $month = 2; $day = 31; $year = 2014; if(!checkdate($month, $day, $year)){ print "올바른 날짜를 입력하세요."; } ?>
올바른 날짜를 입력하세요.
2월에는 31일이 없으므로 checkdate(2, 31, 2014)는 false를 반환. !로 반전되어 if 블록이 실행된다.
용어 용어 정리
checkdate()날짜의 유효성을 검사
매개변수월, 일, 년 (순서 주의)
반환값true 또는 false
!checkdate()"유효하지 않으면" 검사
윤년2월 29일 처리도 자동
월 범위1~12 사이만 유효
년 범위1~32767 (실용상 충분)
실무생일·예약일 입력 검증
1 검사하는 항목들
| 입력 | 결과 | 이유 |
|---|---|---|
checkdate(2, 31, 2014) |
false | 2월에 31일 없음 |
checkdate(2, 29, 2024) |
true | 2024는 윤년 |
checkdate(2, 29, 2025) |
false | 2025는 평년 |
checkdate(13, 1, 2014) |
false | 13월 없음 |
checkdate(0, 1, 2014) |
false | 0월 없음 |
checkdate(4, 31, 2014) |
false | 4월은 30일까지 |
2 윤년 규칙도 자동 처리
윤년 판정은 의외로 까다롭다 — "4의 배수, 100의 배수면 X, 400의 배수면 O". checkdate는 이 모든 규칙을 알아서 처리한다.
checkdate(2, 29, 2024) // true (4의 배수) checkdate(2, 29, 2100) // false (100의 배수, 400의 배수 X) checkdate(2, 29, 2000) // true (400의 배수)
3 활용 — 폼 입력 검증
// 사용자가 생년월일을 세 칸으로 입력 $y = (int)$_POST['year']; $m = (int)$_POST['month']; $d = (int)$_POST['day']; if (!checkdate($m, $d, $y)) { die("유효하지 않은 날짜입니다."); } // 안전하게 사용 $birth = mktime(0, 0, 0, $m, $d, $y);
반응형
4 자주 하는 실수
// 매개변수 순서 잘못 — 년/월/일이 아니라 월/일/년 checkdate($year, $month, $day); // 의도와 다른 결과 // 올바름 checkdate($month, $day, $year);
또한 checkdate는 월·일·년이 정수여야 한다. 문자열로 들어오면 자동 변환되긴 하지만 안전하게 (int)로 캐스팅 권장.
핵심 한 줄 요약
checkdate()날짜가 그레고리력에 실재하는지 검사
매개변수월, 일, 년 — 순서 주의
반환값true / false
윤년자동 처리 (4·100·400 규칙)
월 범위1~12 사이만
활용폼 입력 검증 — 생일·예약일
!checkdate"유효 X면" 형태로 자주 쓰임
반응형
'php' 카테고리의 다른 글
| PHP file_put_contents — 파일에 한 번에 쓰기 완전 정리 (0) | 2026.06.16 |
|---|---|
| PHP file_get_contents — 파일 내용을 한 번에 읽기 완전 정리 (0) | 2026.06.16 |
| PHP mktime — 특정 날짜·시각의 타임스탬프 만들기 완전 정리 (0) | 2026.06.16 |
| PHP time — 유닉스 타임스탬프 가져오기 완전 정리 (0) | 2026.06.16 |
| PHP date — 타임스탬프를 사람이 읽는 형식으로 완전 정리 (0) | 2026.06.15 |
왕진 블로그

댓글