php使用strtotime和date函数判断日期是否有效代码分享


Posted in PHP onDecember 25, 2013

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

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

/**
 * 校验日期格式是否正确
 * 
 * @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函数也无法解析的,则不能使用这个函数,不过这种情况应当非常少见了。

一些例子:

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 相关文章推荐
php 分页原理详解
Aug 21 PHP
PHP基础教程(php入门基础教程)一些code代码
Jan 06 PHP
php通过隐藏表单控件获取到前两个页面的url
Sep 09 PHP
php检索或者复制远程文件的方法
Mar 13 PHP
Cygwin中安装PHP方法步骤
Jul 04 PHP
PHP实现GIF图片验证码
Nov 04 PHP
Laravel实现构造函数自动依赖注入的方法
Mar 16 PHP
一个简单安全的PHP验证码类、PHP验证码
Sep 24 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
Jul 27 PHP
php统计数组不同元素的个数的实例方法
Sep 26 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
Oct 15 PHP
PHP扩展类型及安装方式解析
Apr 27 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
Dec 24 #PHP
linux实现php定时执行cron任务详解
Dec 24 #PHP
生成随机字符串和验证码的类的PHP实例
Dec 24 #PHP
php下载excel无法打开的解决方法
Dec 24 #PHP
php calender(日历)二个版本代码示例(解决2038问题)
Dec 24 #PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
Dec 24 #PHP
phpexcel导入excel数据使用方法实例
Dec 24 #PHP
You might like
PHP反转字符串函数strrev()函数的用法
2012/02/04 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
23个超流行的jQuery相册插件整理分享
2011/04/25 Javascript
固定表格行列(expression)在IE下适用
2013/07/25 Javascript
JavaScript日期时间格式化函数分享
2014/05/05 Javascript
封装好的一个万能检测表单的方法
2015/01/21 Javascript
javascript设计模式--策略模式之输入验证
2015/11/27 Javascript
Struts2+jquery.form.js实现图片与文件上传的方法
2016/05/05 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
2017/09/29 Javascript
原生JS实现Ajax跨域请求flask响应内容
2017/10/24 Javascript
解决Vue使用mint-ui loadmore实现上拉加载与下拉刷新出现一个页面使用多个上拉加载后冲突问题
2017/11/07 Javascript
python中安装模块包版本冲突问题的解决
2017/05/02 Python
python爬虫框架talonspider简单介绍
2017/06/09 Python
Python排序搜索基本算法之归并排序实例分析
2017/12/08 Python
python实现Floyd算法
2018/01/03 Python
Python使用numpy模块创建数组操作示例
2018/06/20 Python
Python的条件表达式和lambda表达式实例
2019/01/31 Python
关于Keras模型可视化教程及关键问题的解决
2020/01/24 Python
Python关键字及可变参数*args,**kw原理解析
2020/04/04 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
来自世界上最好大学的在线课程:edX
2018/10/16 全球购物
地理科学专业毕业生求职信
2013/10/15 职场文书
职业生涯规划书的格式
2013/12/29 职场文书
交通事故检查书范文
2014/01/30 职场文书
大学生怎样写好自荐信
2014/02/25 职场文书
教育技术学专业职业规划书
2014/03/03 职场文书
公务员平时考核实施方案
2014/03/11 职场文书
党员2014两会学习心得体会
2014/03/17 职场文书
天网工程实施方案
2014/03/26 职场文书
老干部工作先进集体事迹材料
2014/05/21 职场文书
销售经理工作失职检讨书
2014/10/24 职场文书
起诉状范本
2015/05/20 职场文书
实习报告怎么写
2019/06/20 职场文书
vue+elementui 实现新增和修改共用一个弹框的完整代码
2021/06/08 Vue.js