网站首页php
php校验日期格式函数
发布时间:2016-02-21 20:02:33编辑:阅读(4173)
一言不合就上源码 ..
/**
* 校验日期格式是否正确
*
* @param string $date 日期
* @param string $formats 需要检验的格式
* @return boolean
*/
function checkDateValid($date, $format="Y-m-d") {
if (!strtotime($date)) { //strtotime转换不对,日期格式显然不对。
return false;
}
$strArr = explode("-",$date);
if(empty($strArr)){ return false; }
foreach($strArr as $key=>$val){
if(!isset($val[1])){
$strArr[$key] = "0".$val;
}
}
$str =implode("-",$strArr);
$unixTime=strtotime($str);
$checkDate= date($format,$unixTime);
return ($checkDate==$str);
}使用方法:
$date = '2015-2-29';
if(!checkDateValid($date)){
echo '非法日期';
}----------------------------神奇的分隔线----------------------------------
下面是正则表达式的实现方式:
function checkDateValidByRegular($date, $format="Y-m-d") {
if (!strtotime($date)) {
//strtotime转换不对,日期格式显然不对。
return false;
}
$strArr = explode("-",$date);
if(empty($strArr)){ return false; }
$strArr[1] = sprintf("%02d", $strArr[1]);
$strArr[2] = sprintf("%02d", $strArr[2]);
$str = implode('-', $strArr);
$regular = '/^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])
|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]
|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/';
return (preg_match($regular, $str));
}使用方法:
$date = '2015-2-29';
if(!checkDateValidByRegular($date)){
echo '非法日期';
}
评论