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 相关文章推荐
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
Oct 29 PHP
php curl常见错误:SSL错误、bool(false)
Dec 28 PHP
解析PHP计算页面执行时间的实现代码
Jun 18 PHP
CI框架中zip类应用示例
Jun 17 PHP
PHP中$this和$that指针使用实例
Jan 06 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
Mar 21 PHP
CodeIgniter 完美解决URL含有中文字符串
May 13 PHP
谈谈php对接芝麻信用踩的坑
Dec 01 PHP
laravel migrate初学常见错误的解决方法
Oct 11 PHP
PHP实现git部署的方法教程
Dec 19 PHP
php往mysql中批量插入数据实例教程
Dec 12 PHP
Laravel Eloquent分表方法并使用模型关联的实现
Nov 25 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
mysql5详细安装教程
2007/01/15 PHP
PHP 根据IP地址控制访问的代码
2010/04/22 PHP
PHP 多维数组排序(usort,uasort)
2010/06/30 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
2013/06/26 PHP
php远程下载类分享
2016/04/13 PHP
Swoole4.4协程抢占式调度器详解
2019/05/23 PHP
javascript 写类方式之五
2009/07/05 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
浅谈jQuery事件绑定原理
2015/01/02 Javascript
详解AngularJS Filter(过滤器)用法
2015/12/28 Javascript
javascript面向对象程序设计高级特性经典教程(值得收藏)
2016/05/19 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
BootStrap Typeahead自动补全插件实例代码
2016/08/10 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
原生js实现仿window10系统日历效果的实例
2017/10/31 Javascript
详解Angular6 热加载配置方案
2018/08/18 Javascript
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
Vue中的v-for指令不起效果的解决方法
2018/09/27 Javascript
nodejs 使用nodejs-websocket模块实现点对点实时通讯
2018/11/28 NodeJs
搭建Vue从Vue-cli到router路由护卫的实现
2019/11/14 Javascript
VUE中使用HTTP库Axios方法详解
2020/02/05 Javascript
Python的Tornado框架的异步任务与AsyncHTTPClient
2016/06/27 Python
Python实现ping指定IP的示例
2018/06/04 Python
Python3.5 Pandas模块之Series用法实例分析
2019/04/23 Python
python实现逢七拍腿小游戏的思路详解
2020/05/26 Python
J2EE面试题大全
2016/08/06 面试题
中专毕业生自我鉴定
2013/11/21 职场文书
查环查孕证明
2014/01/10 职场文书
协议书怎么写
2014/04/21 职场文书
2014年高中生自我评价范文
2014/09/26 职场文书
一个家长教育孩子的心得体会
2016/01/15 职场文书
新手必备之MySQL msi版本下载安装图文详细教程
2021/05/21 MySQL
html+css实现赛博朋克风格按钮
2021/05/26 HTML / CSS
nginx作grpc的反向代理踩坑总结
2021/07/07 Servers
Python实现视频自动打码的示例代码
2022/04/08 Python
MySQL 原理优化之Group By的优化技巧
2022/08/14 MySQL