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读取数据库信息的几种方法
May 24 PHP
Base64在线编码解码实现代码 演示与下载
Jan 08 PHP
php写的带缓存数据功能的mysqli类
Sep 06 PHP
解决ajax+php中文乱码的方法详解
Jun 09 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
Jan 26 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
Oct 24 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
Nov 04 PHP
详谈PHP文件目录基础操作
Nov 11 PHP
CI框架支持$_GET的两种实现方法
May 18 PHP
yii框架redis结合php实现秒杀效果(实例代码)
Oct 26 PHP
Yii框架中使用PHPExcel的方法分析
Jul 25 PHP
php use和include区别总结
Oct 13 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
SONY ICF-SW55的电路分析
2021/03/02 无线电
PHP4实际应用经验篇(8)
2006/10/09 PHP
flexigrid 参数说明
2010/11/23 Javascript
JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具
2010/12/10 Javascript
从数组中随机取x条不重复数据的JS代码
2013/12/24 Javascript
jsp网页搜索结果中实现选中一行使其高亮
2014/02/17 Javascript
node.js中的console.warn方法使用说明
2014/12/09 Javascript
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
js实现文本框支持加减运算的方法
2015/08/19 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
2016/04/29 Javascript
AngularJS基础 ng-dblclick 指令用法
2016/08/01 Javascript
解决vue build打包之后首页白屏的问题
2018/03/06 Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
2019/01/23 Javascript
vue实现购物车小案例
2019/09/27 Javascript
js实现经典贪吃蛇小游戏
2020/03/19 Javascript
零基础写python爬虫之urllib2使用指南
2014/11/05 Python
部署Python的框架下的web app的详细教程
2015/04/30 Python
python的pdb调试命令的命令整理及实例
2017/07/12 Python
python中reload(module)的用法示例详解
2017/09/15 Python
Python面向对象class类属性及子类用法分析
2018/02/02 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
2018/04/27 Python
Django-imagekit的使用详解
2020/07/06 Python
Python是怎样处理json模块的
2020/07/16 Python
不可轻视HTML5!App三年内将被html5顶替彻底消失
2015/11/18 HTML / CSS
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
微软中国官方旗舰店:销售Surface、Xbox One、笔记本电脑、Office
2018/07/23 全球购物
CK澳大利亚官网:Calvin Klein澳大利亚
2020/12/12 全球购物
幼儿园大班教学反思
2014/02/10 职场文书
小学母亲节活动方案
2014/03/14 职场文书
文明演讲稿范文
2014/05/12 职场文书
2014年小班保育员工作总结
2014/12/23 职场文书
家属慰问信
2015/02/14 职场文书
2015年幼儿园安全工作总结
2015/05/12 职场文书
Spring整合Mybatis的全过程
2021/06/28 Java/Android
Redis监控工具RedisInsight安装与使用
2022/03/21 Redis
python数据处理之Pandas类型转换
2022/04/28 Python