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下MAIL的另一解决方案
Oct 09 PHP
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
Dec 06 PHP
php 将字符串按大写字母分隔成字符串数组
Apr 30 PHP
基于PHP array数组的教程详解
Jun 05 PHP
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
Jun 25 PHP
PHP中的命名空间相关概念浅析
Jan 22 PHP
PHP网站开发中常用的8个小技巧
Feb 13 PHP
CodeIgniter分页类pagination使用方法示例
Mar 28 PHP
thinkphp3.2实现上传图片的控制器方法
Apr 28 PHP
Windows平台实现PHP连接SQL Server2008的方法
Jul 26 PHP
php调用云片网接口发送短信的实现方法
Oct 25 PHP
Laravel相关的一些故障解决
Aug 19 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
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
php中将一段数据存到一个txt文件中并显示其内容
2014/08/15 PHP
php图片水印添加、压缩、剪切的封装类实现
2020/04/18 PHP
php精确的统计在线人数的方法
2015/10/21 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
Javascript 跨域访问解决方案
2009/02/14 Javascript
让ie运行js时提示允许阻止内容运行的解决方法
2010/10/24 Javascript
JavaScript中创建类/对象的几种方法总结
2013/11/29 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
2015/07/26 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
jQuery Raty 一款不错的星级评分插件
2016/08/24 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
node.js操作mysql简单实例
2017/05/25 Javascript
JavaScript之Date_动力节点Java学院整理
2017/06/28 Javascript
Bootstrap Table从零开始
2017/06/30 Javascript
vue项目打包部署到服务器的方法示例
2018/08/27 Javascript
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
零基础写python爬虫之urllib2使用指南
2014/11/05 Python
利用Python绘制MySQL数据图实现数据可视化
2015/03/30 Python
python的numpy模块安装不成功简单解决方法总结
2017/12/23 Python
python 实现调用子文件下的模块方法
2018/12/07 Python
用sqlalchemy构建Django连接池的实例
2019/08/29 Python
树莓派3 搭建 django 服务器的实例
2019/08/29 Python
Python线程协作threading.Condition实现过程解析
2020/03/12 Python
CSS3的新特性介绍
2008/10/31 HTML / CSS
兰蔻加拿大官方网站:Lancome加拿大
2016/08/05 全球购物
新浪微博实习心得体会
2014/01/27 职场文书
运动会通讯稿100字
2014/01/31 职场文书
自立自强的名人事例
2014/02/10 职场文书
护理专科自荐书范文
2014/02/18 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
超强台风观后感
2015/06/09 职场文书
2015年支教教师工作总结
2015/07/22 职场文书
解析Java异步之call future
2021/06/14 Java/Android