欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

php 判断日期格式

shiping1 的头像

php 判断日期格式函数

 (2011-08-09 09:53:24)
标签: 

杂谈

 

之所以要写这个函数,因为简单。如果要用正则表达式,相当麻烦

//echo is_date("2009-01-01 23:59:59")
function is_date($date)
{
 if($date == date('Y-m-d H:i:s',strtotime($date))){
  return true;
 }else{
  return false;
 }
 
}

来自 http://blog.sina.com.cn/s/blog_4a22ba670100u46n.html



咋一想,判断日期是否有效应该是蛮简单的一个功能,但是细想起来还是有点麻烦的,因为既要检验格式,又要检验有效性。例如2013-02-29,虽然格式正确,但是日期无效;而2012-02-29格式正确,也有效。

一种方法可以使用正则,但是正则其实理解起来蛮麻烦的,而且使用正则在检验有效性方面也不太好。这里提供一个方法,主要是使用strtotime和date函数进行检验。直接上函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
 * 校验日期格式是否正确
 *
 * @param string $date 日期
 * @param string $formats 需要检验的格式数组
 * @return boolean
 */
function checkDateIsValid($date, $formats = array("Y-m-d", "Y/m/d")) {
    $unixTime = strtotime($date);
    if (!$unixTime) { //strtotime转换不对,日期格式显然不对。
        return false;
    }
 
    //校验日期的有效性,只要满足其中一个格式就OK
    foreach ($formats as $format) {
        if (date($format, $unixTime) == $date) {
            return true;
        }
    }
    
    return false;
}

代码注释里说明的比较详细了,就不再叙说了。有一点要注意下:如果需要的日期格式比较特别,即便是正确的格式,strtotime函数也无法解析的,则不能使用这个函数,不过这种情况应当非常少见了。

一些例子:

1
2
3
4
var_dump(checkDateIsValid("2013-09-10")); //输出true
var_dump(checkDateIsValid("2013-09-ha")); //输出false
var_dump(checkDateIsValid("2012-02-29")); //输出true
var_dump(checkDateIsValid("2013-02-29")); //输出false

转载请注明:快乐编程 » php判断日期是否有效的思考

来自  http://www.01happy.com/php-check-date-is-valid/
 

php 判断日期格式是否正确

2014-12-18 09:14顾林波 | 分类:PHP | 浏览61次
比如要判断日期格式:2015-01-14,这样的日期格式,如何判断这个日期格式
 
举报| 2014-12-18 09:19提问者采纳
1
2
3
4
5
6
7
8
$data='2014-11-11';//这里可以任意格式,因为strtotime函数很强大
$is_date=strtotime($data)?strtotime($data):false;
 
if($is_date===false){
    exit('日期格式非法');
}else{
    echo date('Y-m-d',$is_date);//只要提交的是合法的日期,这里都统一成2014-11-11格式
}
提问者评价
来自 http://zhidao.baidu.com/question/560995893965912404.html

 

普通分类: