判断日期是否有效
checkdate检查日期
检查一个给定的日期是否有效。checkdate(int 月, int日,int年) 例如:
checkdate(4, 31, 2017) ==>返回false 因为4月只有30天
当提供的是一个时间戳的时候,需要配合getdate()函数。
$time = getdate(1618972361); // 2021-4-21
$ok = checkdate($time['mon'], $time['mday'], $time['year']);
// 都返回true是一个有效日期
var_dump(checkdate(4, 21, 2021));
var_dump($ok);
使用strtotime和date函数进行检验判断
/**
* 校验日期格式是否正确
*
* @param string $date 日期
* @param string $formats 需要检验的格式数组
* @return boolean
*/
function checkDateIsValid($date, $formats = array("Y-m-d", "Y/m/d")) {
$unixTime = strtotime($date);
if (!$unixTime) { //strtotime转换不对,日期格式显然不对。
return false;
}
//校验日期的有效性,只要满足其中一个格式就OK
foreach ($formats as $format) {
if (date($format, $unixTime) == $date) {
return true;
}
}
return false;
}
有一点要注意下:如果需要的日期格式比较特别,即便是正确的格式,strtotime函数也无法解析的,则不能使用这个函数,不过这种情况应当非常少见了。
var_dump(checkDateIsValid("2021-09-10")); //输出true
var_dump(checkDateIsValid("2021-09-ha")); //输出false