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时间不正确的解决方法
Apr 09 PHP
PHP 中文处理技巧
Apr 25 PHP
PHP中uploaded_files函数使用方法详解
Mar 09 PHP
php编写的简单页面跳转功能实现代码
Nov 27 PHP
thinkPHP实现瀑布流的方法
Nov 29 PHP
WAMP环境中扩展oracle函数库(oci)
Jun 26 PHP
php实现仿写CodeIgniter的购物车类
Jul 29 PHP
PHP中仿制 ecshop验证码实例
Jan 06 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
Sep 27 PHP
PHP实现的mysql读写分离操作示例
May 22 PHP
php实现JWT(json web token)鉴权实例详解
Nov 05 PHP
简单的php购物车代码
Jun 05 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基础知识介绍
2013/09/17 PHP
PHP连接MYSQL数据库实例代码
2016/01/20 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
php多进程中的阻塞与非阻塞操作实例分析
2020/03/04 PHP
代码精简的可以实现元素圆角的js函数
2007/07/21 Javascript
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
aspx中利用js实现确认删除代码
2010/07/22 Javascript
jquery 无限级联菜单案例分享
2013/03/26 Javascript
JavaScript获得url所有参数键值表的方法
2015/03/21 Javascript
js验证身份证号有效性并提示对应信息
2015/10/19 Javascript
深入解析JavaScript中的立即执行函数
2016/05/21 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
动态JavaScript所造成一些你不知道的危害
2016/09/25 Javascript
js 性能优化之快速响应的用户界面
2017/02/15 Javascript
JS+DIV实现的卷帘效果示例
2017/03/22 Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
2017/07/19 Javascript
如何编写一个d.ts文件的步骤详解
2018/04/13 Javascript
JavaScript隐式类型转换代码实例
2020/05/29 Javascript
Python程序设计入门(4)模块和包
2014/06/16 Python
跟老齐学Python之用Python计算
2014/09/12 Python
Python中asyncore的用法实例
2014/09/29 Python
基于sklearn实现Bagging算法(python)
2019/07/11 Python
tensorflow2.0教程之Keras快速入门
2021/02/20 Python
智利最大的网上商店:Linio智利
2016/11/24 全球购物
台湾良兴购物网:EcLife
2019/12/01 全球购物
EJB3推出JPA的原因
2013/10/16 面试题
求职信的要素有哪些呢
2013/12/26 职场文书
财务主管的岗位职责
2013/12/30 职场文书
企业给企业的表扬信
2014/01/13 职场文书
小学生感恩老师演讲稿
2014/08/28 职场文书
领导班子四风对照检查材料思想汇报
2014/09/26 职场文书
公司向个人借款协议书范本
2014/10/09 职场文书
个人批评与自我批评总结
2014/10/17 职场文书
安全生产工作汇报材料
2014/10/28 职场文书
2015年保险公司个人工作总结
2015/05/22 职场文书