본문 바로가기

비개발자의 개발 일지

현장 팀장에서 수출 ERP까지 — AI와 함께 시스템을 만든 기록

시리즈 보기
php

PHP checkdate — 날짜 유효성 검사 완전 정리

by 왕진 2026. 6. 16.
반응형

 

 

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면" 형태로 자주 쓰임
반응형

댓글