网站首页php
php校验日期格式函数
发布时间:2016-02-21 20:02:33编辑:阅读(3568)
一言不合就上源码 ..
/** * 校验日期格式是否正确 * * @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 '非法日期'; }
评论