首页 > 代码库 > php判断日期格式是否合法
php判断日期格式是否合法
实现方法
function isDate( $dateString ) { return strtotime( date(‘Y-m-d‘, strtotime($dateString)) ) === strtotime( $dateString );} echo $this->isDate(‘2014-11-19‘) ? ‘true‘ : ‘false‘;echo ‘</br>‘;echo $this->isDate(‘2014-11-32‘)? ‘true‘ : ‘false‘;echo ‘</br>‘;echo $this->isDate(‘2014-a-b‘)? ‘true‘ : ‘false‘;echo ‘</br>‘;echo $this->isDate(‘2014-1-1‘)? ‘true‘ : ‘false‘;echo ‘</br>‘;echo $this->isDate(‘2014-01-01‘)? ‘true‘ : ‘false‘;/*结果truefalsefalsetruetrue*/
date(‘Y-m-d‘, strtotime($dateString)) 这段代码是将输入的时间字符串转换成unix时间戳(自1970-1-1 0:0:0起),然后再转回日期字符串。 如果输入的日期字符串格式不正确, 那么转换前的值与转换后的值是不一致的, 也就是说 date(‘Y-m-d‘, strtotime($dateString)) == $dateString 这句代码的结果将false。那为什么还要将上面的代码写成 strtotime( date(‘Y-m-d‘, strtotime($dateString)) ) === strtotime( $dateString ) 这样呢?因为将代码写成date(‘Y-m-d‘, strtotime($dateString)) == $dateString这样, 那么如果$dateString的值为2014-1-1这种格式( 一个合法的时间字符串),返回的结果也将为false, 因为date(‘Y-m-d‘,strtotime(‘2014-1-1‘))返回的结果为2014-01-01这个样子, 如果月份和日期为个位数, 会在前面自动补上0,从字符串比较的层面看2014-1-1很明显不等于2014-01-01, 所以需要在外层加上strtotime, 将两边的日期都转换成unix时间戳, 再进行比较。
php判断日期格式是否合法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。