PHP의 checkdate() 함수는 주어진 날짜가 그레고리력(양력) 기준으로 실제 존재하는 날짜인지 검사하는 내장 함수입니다. 예를 들어 2월 30일처럼 존재할 수 없는 날짜를 입력하면 FALSE를 반환하고, 유효한 날짜라면 TRUE를 반환합니다.
문법(Syntax)
checkdate(month, day, year)
매개변수(Parameters)
month − 월을 의미하며, 1부터 12 사이의 정수로 지정합니다.
day − 일을 의미하며, 1부터 31 사이의 정수로 지정합니다.
year − 연도를 의미하며, 1부터 32767 사이의 정수로 지정합니다.
반환값(Return Value)
checkdate() 함수는 전달된 날짜가 유효하면 TRUE(bool(true)), 유효하지 않으면 FALSE(bool(false))를 반환합니다.
참고: 이 함수는 윤년을 자동으로 고려하기 때문에, 예를 들어 2020년 2월 29일은 TRUE를 반환하지만 2019년 2월 29일은 FALSE를 반환합니다. 따라서 사용자 입력값으로 날짜를 받을 때 매우 유용하게 활용됩니다.
예제 1
다음은 특정 날짜의 유효성을 검사하는 기본적인 예제입니다.
<?php var_dump(checkdate(10, 29, 2018)); ?>
출력 결과
bool(true)
2018년 10월 29일은 실제로 존재하는 날짜이므로 TRUE가 반환됩니다.
예제 2
이번에는 변수에 값을 담아 검사하는 예제를 살펴보겠습니다.
<?php $month = 9; $day = 30; $year = 2018; var_dump(checkdate($month, $day, $year)); ?>
출력 결과
bool(true)
9월은 30일까지 존재하는 달이므로 TRUE가 반환됩니다.
유효하지 않은 날짜의 경우
반대로 존재하지 않는 날짜를 입력하면 어떻게 될까요?
<?php var_dump(checkdate(2, 30, 2021)); // 2월 30일은 존재하지 않음 ?>
출력 결과
bool(false)
정리
checkdate() 함수는 월, 일, 연도 세 개의 인자를 받아 해당 날짜가 그레고리력상 유효한지 판별합니다. 폼 입력 검증, 데이터베이스 저장 전 날짜 확인 등에서 오류를 사전에 방지할 수 있는 간편하고 실용적인 함수이므로, 날짜 관련 로직을 작성할 때 적극적으로 활용해 보시기 바랍니다.