php中如何校验日期时间的有效性

php中有系统函数checkdate()来校验日期的合法性,但时间的合法性只能自己写吗?这样要分开校验日期和时间,有什么方法可以一次性校验吗?

我也有看jenssegers/datenesbot/carbon,但我没找到校验日期时间的方法,我也 Google 查到了这个问题How To Check is a string is a valid date,但并没有能解决我的问题,请问如何解决该问题?

自己简单写了一下校验:

$dt = '2017-7-3 23:90:99';
$dt_arr = explode(' ', $dt);
list($year, $month, $day) = explode('-', $dt_arr[0]);
list($hour, $minute, $second) = explode(':', $dt_arr[1]);
if(!checkdate($month, $day, $year) || $hour < 0 || $minute < 0 || $second < 0 || $hour > 23 || $minute > 59 || $second > 59) {
    echo 'Invalided datetime';
} else {
    echo 'OK';
}
阅读 4.1k
2 个回答
function verifyDate($date) {
    try {
        new DateTime($date);
        return true;
    } catch(\Exception $e) {
        return false;
    }
}

不知道这样会不会显得太low

你所说的事件合法性到底指的是什么呢? 看了你判断逻辑 , $res = strtotime($dt); 看看能不能转换成时间戳,不能转换就是不合法的!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题