加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

PHP校验日期格式是否合法

发布时间:2020-05-25 23:01:44 所属栏目:PHP 来源:互联网
导读:在后端开发中,我们常常需要校验前端传入参数的合法性,如果是校验日期参数,我们可以通过下面的方法来校验:

在后端开发中,我们常常需要校验前端传入参数的合法性,如果是校验日期参数,我们可以通过下面的方法来校验:

/**
 * 校验日期格式是否合法
 * @param string $date
 * @param array $formats
 * @return bool
 */
function isDateValid($date,$formats = array('Y-m-d','Y/m/d')) {
$unixTime = strtotime($date);
if(!$unixTime) { //无法用strtotime转换,说明日期格式非法
    return false;
}

//校验日期合法性,只要满足其中一个格式就可以
foreach ($formats as $format) {
    if(date($format,$unixTime) == $date) {
        return true;
    }
}

return false;

}

说明: 为什么只用strtotime()函数是无法准确校验时间呢? 因为只要格式正确的日期用strtotime()都能将其转成时间戳,比如2018-02-31这个日期,其实逻辑上来说这个日期是不存在的,但是在strtotime()函数依然能将其成功转成时间戳,所以我们需要将时间戳用date()转成标准格式,然后和传入的日期进行比对,如果不相等,说明这个传入的日期也是不合法的。 PHP本身也有校验时间的函数checkdate(),这个函数需要三个参数,分别是月、日、年。比如上面的日期可以这样调用checkdate函数检测

if(checkdate(2,31,2018)) {
    echo '日期格式正确';
} else {
    echo '日期格式不正确';
}

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读