PHP 버전
4+
/**
 * 간단 구문 설명
 *
 * checkdate($month, $day, $year): bool
 * @param int $month (필수) : 검사할 월 (1~12)
 * @param int $day (필수)   : 검사할 일 (1~월별 최대일수)
 * @param int $year (필수)  : 검사할 연도 (1~32767)
 */
 
/* checkdate() 함수 활용 예제: 윤년 및 월별 일수 검증 */
var_dump(checkdate(2, 29, 2024)); // bool(true)  → 2024년은 윤년, 2월 29일 유효
var_dump(checkdate(2, 29, 2023)); // bool(false) → 2023년은 윤년 아님, 2월 29일 존재 X
var_dump(checkdate(4, 31, 2023)); // bool(false) → 4월은 30일까지, 31일은 존재 X
checkdate(int $month, int $day, int $year): bool
if (checkdate($_POST['month'], $_POST['day'], $_POST['year'])) {
    echo '유효한 생년월일입니다.';
}
function isValidDate($dateStr) {
    // '-' 구분자로 연, 월, 일을 분리
    $parts = explode('-', $dateStr);

    // 연, 월, 일이 모두 있는지 확인
    if (count($parts) === 3) {
        // checkdate(month, day, year) 순서 주의
        return checkdate($parts[1], $parts[2], $parts[0]);
    }

    return false;
}

// 사용 예제
var_dump(isValidDate('2023-12-31')); // bool(true)
var_dump(isValidDate('2023-02-29')); // bool(false) → 2023년은 윤년 아님