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 相关文章推荐
Content-type 的说明
Oct 09 PHP
初探PHP5
Oct 09 PHP
有关JSON以及JSON在PHP中的应用
Apr 09 PHP
PHP最常用的ini函数分析 针对PHP.ini配置文件
Apr 22 PHP
php中通过curl检测页面是否被百度收录
Sep 27 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
Feb 18 PHP
PHP文件缓存内容保存格式实例分析
Aug 20 PHP
php中的ini配置原理详解
Oct 14 PHP
PHP加密解密实例分析
Dec 25 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
May 06 PHP
PHP常用函数之根据生日计算年龄功能示例
Oct 21 PHP
thinkphp5实现微信扫码支付
Dec 23 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调用三种数据库的方法(3)
2006/10/09 PHP
MySQL GBK→UTF-8编码转换
2007/05/24 PHP
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
2014/10/21 PHP
php数组索引与键值操作技巧实例分析
2015/06/24 PHP
php基于PDO连接MSSQL示例DEMO
2016/07/13 PHP
PHP实现微信提现功能
2018/09/30 PHP
JavaScript 定义function的三种方式小结
2009/10/16 Javascript
利用谷歌地图API获取点与点的距离的js代码
2012/10/11 Javascript
JavaScript实现网页上的浮动广告的简单方法
2013/06/14 Javascript
nodejs中使用多线程编程的方法实例
2015/03/24 NodeJs
灵活的理解JavaScript中的this指向
2016/02/25 Javascript
require、backbone等重构手机图片查看器
2016/11/17 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
nodeJs实现基于连接池连接mysql的方法示例
2018/02/10 NodeJs
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
vue + vuex todolist的实现示例代码
2018/03/09 Javascript
JS实现面向对象继承的5种方式分析
2018/07/21 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
使用kbone解决Vue项目同时支持小程序问题
2019/11/08 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
vue实现动态表格提交参数动态生成控件的操作
2020/11/09 Javascript
[46:38]完美世界DOTA2联赛PWL S2 Magma vs PXG 第三场 11.28
2020/12/02 DOTA
python实现同时给多个变量赋值的方法
2015/04/30 Python
python使用xmlrpclib模块实现对百度google的ping功能
2015/06/02 Python
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
pandas DataFrame 根据多列的值做判断,生成新的列值实例
2018/05/18 Python
10种CSS3实现的loading动画,挑一个走吧?
2020/11/16 HTML / CSS
德国家具在线:Fashion For Home
2017/03/11 全球购物
经贸日语专业个人求职信
2013/12/13 职场文书
关于工资低的辞职信
2014/01/14 职场文书
优秀老师事迹材料
2014/02/05 职场文书
大学毕业感言一句话
2014/02/06 职场文书
酒店管理专业毕业生求职自荐信
2014/04/28 职场文书
2015年教师节慰问信
2015/03/23 职场文书
Python turtle实现贪吃蛇游戏
2021/06/18 Python
JavaScript实现酷炫的鼠标拖尾特效
2022/02/18 Javascript