【发布时间】:2014-07-09 22:14:06
【问题描述】:
我正在尝试检查一个日期是否真实,它必须返回 true,如果不是,它必须返回 false。
当我写 35-02-2012(日期格式 dd-mm-yy)时它似乎不起作用,它返回 true,但我期待 false,我不知道我错在哪里。
下面是我的功能
function isItRealDate($date) {
if ($date == '') {
return false;
} else {
$rxDatePattern = '/^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/'; //Declare Regex
$dtArray = preg_match($rxDatePattern, $date); // is format OK?
if ($dtArray == '0') {
return false;
} else {
$tableau_date = explode('-', $date);
//Checks for dd-mm-yyyy format.
$dtMonth = $tableau_date[1];
$dtDay = $tableau_date[0];
$dtYear = $tableau_date[2];
if ($dtMonth < 1 || $dtMonth > 12) {
return false;
} elseif ($dtDay < 1 || $dtDay > 31) {
return false;
} elseif (($dtMonth == 4 || $dtMonth == 6 || $dtMonth == 9 || $dtMonth == 11) && $dtDay == 31) {
return false;
} elseif ($dtMonth == 2) {
$isleap = ($dtYear % 4 == 0 && ($dtYear % 100 != 0 || $dtYear % 400 == 0));
if ($dtDay > 29 || ($dtDay == 29 && !$isleap)) {
return false;
} else {
return true;
}
}
}
}
}
任何帮助将不胜感激
【问题讨论】:
-
PHP
checkdate(), php.net/manual/en/function.checkdate.php -
@islanddave iirc,
strtotime翻译得很聪明。所以0-1-2014将产生日期31-12-2013- 即使它的日期无效。
标签: php validation date