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 相关文章推荐
一个ORACLE分页程序,挺实用的.
Oct 09 PHP
php实现保存submit内容之后禁止刷新
Mar 19 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
Apr 25 PHP
ThinkPHP在新浪SAE平台的部署实例
Oct 31 PHP
php判断两个浮点数是否相等的方法
Mar 14 PHP
php生成不重复随机数、数组的4种方法分享
Mar 30 PHP
PHP引用的调用方法分析
Apr 25 PHP
Zend Framework框架中实现Ajax的方法示例
Jun 27 PHP
浅谈PHP中如何实现Hook机制
Nov 14 PHP
YII框架模块化处理操作示例
Apr 26 PHP
php实现通过stomp协议连接ActiveMQ操作示例
Feb 23 PHP
详解PHP中curl_multi并发的实现
Jun 08 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调用nginx的mod_zip模块打包ZIP文件
2014/06/11 PHP
PHP6新特性分析
2016/03/03 PHP
发现的以前不知道的函数
2006/09/19 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
2013/12/28 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
2016/04/14 Javascript
基于JavaScript实现随机颜色输入框
2016/12/10 Javascript
jQuery实现页面倒计时并刷新效果
2017/03/13 Javascript
提高Node.js性能的应用技巧分享
2017/08/10 Javascript
jquery根据name取得select选中的值实例(超简单)
2018/01/25 jQuery
详解Vue中watch的详细用法
2018/11/28 Javascript
简单学习5种处理Vue.js异常的方法
2019/06/17 Javascript
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
layui文件上传控件带更改后数据传值的方法
2019/09/23 Javascript
JavaScript监听触摸事件代码实例
2019/12/30 Javascript
js实现石头剪刀布游戏
2020/10/11 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
[57:53]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#3OG VS VP
2016/03/03 DOTA
python列表操作使用示例分享
2014/02/21 Python
python中xrange和range的区别
2014/05/13 Python
Python中字典的setdefault()方法教程
2017/02/07 Python
Python中Django发送带图片和附件的邮件
2017/03/31 Python
django中模板的html自动转意方法
2018/05/27 Python
Python-split()函数实例用法讲解
2020/12/18 Python
css3中用animation的steps属性制作帧动画
2019/04/25 HTML / CSS
加利福尼亚州威尼斯的女性奢侈品设计师服装和概念店:Mona Moore
2018/09/13 全球购物
澳大利亚波希米亚风时尚品牌:Tree of Life
2019/09/15 全球购物
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
幼儿园保育员辞职信
2014/01/12 职场文书
资源工程专业毕业生求职信
2014/02/27 职场文书
搞笑婚礼主持词
2014/03/13 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书
单方投资意向书
2015/05/11 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书
先进个人事迹材料(2016推荐版)
2016/03/01 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书