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 相关文章推荐
第四节 构造函数和析构函数 [4]
Oct 09 PHP
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
Sep 01 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
Apr 23 PHP
PHP性能优化 产生高度优化代码
Jul 22 PHP
PHP输出XML到页面的3种方法详解
Jun 06 PHP
PHP导航下拉菜单的实现如此简单
Sep 22 PHP
PHP生成图片验证码、点击切换实例
Jun 25 PHP
php实现通过cookie换肤的方法
Jul 13 PHP
php抓取并保存网站图片的实现代码
Oct 28 PHP
PHP实现查询手机归属地的方法详解
Apr 28 PHP
2017年最好用的9个php开发工具推荐(超好用)
Oct 23 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
Aug 14 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语言认识上需要避免的10大误区
2014/06/12 PHP
PHP 验证身份证是否合法的函数
2017/02/09 PHP
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
Javascript 学习书 推荐
2009/06/13 Javascript
Jquery知识点二 jquery下对数组的操作
2011/01/15 Javascript
js原型链原理看图说明
2012/07/07 Javascript
js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码
2012/12/17 Javascript
JavaScript二维数组实现的省市联动菜单
2014/05/08 Javascript
js类定义函数时用prototype与不用的区别示例介绍
2014/06/10 Javascript
js使用栈来实现10进制转8进制与取除数及余数
2014/06/11 Javascript
比例尺、缩略图、平移缩放之百度地图添加控件方法
2015/08/03 Javascript
js简单实现表单中点击按钮动态增加输入框数量的方法
2015/08/18 Javascript
跟我学习javascript的arguments对象
2015/11/16 Javascript
Bootstrap编写导航栏和登陆框
2016/05/30 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
React BootStrap用户体验框架快速上手
2018/03/06 Javascript
Vue中keep-alive组件的深入理解
2020/08/23 Javascript
原生js实现分页效果
2020/09/23 Javascript
Python中的单继承与多继承实例分析
2018/05/10 Python
Flask框架使用DBUtils模块连接数据库操作示例
2018/07/20 Python
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
HTML5 File接口在web页面上使用文件下载
2017/02/27 HTML / CSS
HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图
2015/08/31 HTML / CSS
美国女性奢华品牌精品店:INTERMIX
2017/10/12 全球购物
经济系大学生求职信
2013/10/01 职场文书
大四本科生的自我评价
2013/12/30 职场文书
环境工程专业自荐信范文
2014/03/18 职场文书
2014年纪检工作总结
2014/11/12 职场文书
五年级学生期末评语
2014/12/26 职场文书
介绍信如何写
2015/01/31 职场文书
党员发展大会主持词
2015/07/03 职场文书
2016年大学生就业指导课心得体会
2015/10/09 职场文书
Java中使用Filter过滤器的方法
2021/06/28 Java/Android
golang中字符串MD5生成方式总结
2021/07/04 Golang
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL