验证错误日期PHP

时间:2016-02-01 00:06:03

标签: php

我正在尝试在PHP中验证日期,但问题是有些日期有效,例如:“02/2/2015”返回true,“20/12/2015”false返回,是一个严重的问题,我发现代码中没有错误。

功能

<?php

function check_date($date) {
    $open_date  = explode('/', $date);
    if (count($open_date) == 3) {
        if (checkdate($open_date[0], $open_date[1], $open_date[2])) {
            return true;
        } else {
         return false;
        }
    } else {
        return false;
    }
}

//$date = "02/2/2015"; // return true !
$date = "20/12/2015"; // return false ?

if(check_date($date)) {
    echo "valid";
} else {
    echo "invalid";
}

?>

怎么能解决这个问题?

2 个答案:

答案 0 :(得分:1)

checkdate按此顺序预计月,日和年:

https://secure.php.net/manual/en/function.checkdate.php

如果您的日期格式为日/月/年,那么您仍然可以使用checkdate,您只需更改参数的顺序:

if (checkdate($open_date[1], $open_date[0], $open_date[2]))

答案 1 :(得分:0)

checkdate函数的签名看起来像checkdate(month,day,year);。你最多可以有12个月而不是20岁。: - )