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 相关文章推荐
模仿OSO的论坛(一)
Oct 09 PHP
在PHP里得到前天和昨天的日期的代码
Aug 16 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
Nov 07 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
Nov 12 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
Jul 28 PHP
遍历指定目录,并存储目录内所有文件属性信息的php代码
Oct 28 PHP
PHP异常处理定义与使用方法分析
Jul 25 PHP
基于swoole实现多人聊天室
Jun 14 PHP
Yii框架 session 数据库存储操作方法示例
Nov 18 PHP
php 使用 __call实现重载功能示例
Nov 18 PHP
设定php简写功能的方法
Nov 28 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
Apr 07 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 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
2010/03/23 PHP
php实现监听事件
2013/11/06 PHP
PHP+jQuery 注册模块开发详解
2014/10/14 PHP
Centos6.5和Centos7 php环境搭建方法
2016/05/27 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
2020/03/23 PHP
JavaScript中的排序算法代码
2011/02/22 Javascript
jquery如何扑捉回车键触发的事件
2014/04/24 Javascript
js使用removeChild方法动态删除div元素
2014/08/01 Javascript
使用jquery解析XML示例代码
2014/09/05 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
2016/01/26 Javascript
node.js连接mongoDB数据库 快速搭建自己的web服务
2016/04/17 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
2017/04/18 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
Angular限制input框输入金额(是小数的话只保留两位小数点)
2017/07/13 Javascript
基于vue.js快速搭建图书管理平台
2017/10/29 Javascript
es6新特性之 class 基本用法解析
2018/05/05 Javascript
Vue+webpack项目配置便于维护的目录结构教程详解
2018/10/14 Javascript
微信小程序实现form表单本地储存数据
2019/06/27 Javascript
有关wxpython pyqt内存占用问题分析
2014/06/09 Python
Python实现简单生成验证码功能【基于random模块】
2018/02/10 Python
Python中.join()和os.path.join()两个函数的用法详解
2018/06/11 Python
Python实现Event回调机制的方法
2019/02/13 Python
Python3.5迭代器与生成器用法实例分析
2019/04/30 Python
python 修改本地网络配置的方法
2019/08/14 Python
python中用logging实现日志滚动和过期日志删除功能
2019/08/20 Python
Pytorch 神经网络—自定义数据集上实现教程
2020/01/07 Python
浅谈amaze-ui中datepicker和datetimepicker注意的几点
2020/08/21 HTML / CSS
Vans澳大利亚官网:购买鞋子、服装及配件
2019/09/05 全球购物
Servlet都有哪些方法?主要作用是什么?
2014/03/04 面试题
自荐书模板
2013/12/19 职场文书
大学生两会学习心得体会
2014/03/10 职场文书
诚实守信道德模范事迹材料
2014/08/15 职场文书
教师三严三实对照检查材料
2014/09/25 职场文书
小学中等生评语
2014/12/29 职场文书
2015年学校教务处工作总结
2015/05/11 职场文书
jquery插件实现代码雨特效
2021/04/24 jQuery