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 相关文章推荐
一个图形显示IP的PHP程序代码
Oct 19 PHP
php expects parameter 1 to be resource, array given 错误
Mar 23 PHP
我的php学习笔记(毕业设计)
Feb 21 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
Jun 05 PHP
php实现的短网址算法分享
Jun 20 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
Jun 26 PHP
完美解决thinkphp验证码出错无法显示的方法
Dec 09 PHP
教你识别简单的免查杀PHP后门
Sep 13 PHP
Yii快速入门经典教程
Dec 28 PHP
php使用escapeshellarg时中文被过滤的解决方法
Jul 10 PHP
php实现微信支付之退款功能
May 30 PHP
使用Git实现Laravel项目的自动化部署
Nov 24 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
ajax缓存问题解决途径
2006/12/06 PHP
php获取服务器信息的实现代码
2013/02/04 PHP
PHP中overload与override的区别
2017/02/13 PHP
php 中self,this的区别和操作方法实例分析
2019/11/04 PHP
jQuery选择头像并实时显示的代码
2010/06/27 Javascript
JS执行删除前的判断代码
2014/02/18 Javascript
jquery实现下拉菜单的二级联动利用json对象从DB取值显示联动
2014/03/27 Javascript
JavaScript中的普通函数和箭头函数的区别和用法详解
2017/03/21 Javascript
如何使用bootstrap框架 bootstrap入门必看!
2017/04/13 Javascript
vue 下列表侧滑操作实例代码详解
2018/07/24 Javascript
Angular事件之不同组件间传递数据的方法
2018/11/15 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
2019/01/16 Javascript
vue实现带复选框的树形菜单
2019/05/27 Javascript
微信小程序如何实现在线客服功能
2019/10/16 Javascript
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
vue 单页应用和多页应用的优劣
2020/10/22 Javascript
[36:33]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第二场
2018/04/04 DOTA
[01:14]英雄,所敬略同——2018完美盛典宣传视频4K
2018/12/05 DOTA
[46:58]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第一场 12.17
2020/12/19 DOTA
Python3中的2to3转换工具使用示例
2015/06/12 Python
Django查找网站项目根目录和对正则表达式的支持
2015/07/15 Python
python 3.6.5 安装配置方法图文教程
2018/09/18 Python
DES加密解密算法之python实现版(图文并茂)
2018/12/06 Python
对Python多线程读写文件加锁的实例详解
2019/01/14 Python
Python深拷贝与浅拷贝用法实例分析
2019/05/05 Python
Python3爬虫里关于Splash负载均衡配置详解
2020/07/10 Python
纪伊国屋泰国网上书店:Kinokuniya泰国
2017/12/24 全球购物
linux面试题参考答案(7)
2012/10/29 面试题
介绍一下linux的文件系统
2015/10/06 面试题
物流管理应届生求职信
2013/11/07 职场文书
英语系本科生求职信
2014/07/15 职场文书
心得体会的写法
2014/09/05 职场文书
未受刑事制裁公证证明
2014/09/20 职场文书
2016年习主席讲话学习心得体会
2016/01/20 职场文书
2016年公务员六五普法心得体会
2016/01/21 职场文书
CSS 实现多彩、智能的阴影效果
2021/05/12 HTML / CSS