码迷,mamicode.com
首页 > Web开发 > 详细

php判断日期格式是否合法

时间:2014-12-03 10:28:42      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   sp   on   div   

实现方法

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‘;

/*
结果
true
false
false
true
true
*/    

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时间戳, 再进行比较。

原文地址:http://chhblog.com/article/294.html

php判断日期格式是否合法

标签:style   blog   http   io   ar   color   sp   on   div   

原文地址:http://www.cnblogs.com/aspwebchh/p/4139249.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!