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 相关文章推荐
基于mysql的论坛(2)
Oct 09 PHP
php 文件状态缓存带来的问题
Dec 14 PHP
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
Jun 17 PHP
php函数间的参数传递(值传递/引用传递)
Sep 23 PHP
PHP清除字符串中所有无用标签的方法
Dec 01 PHP
php类常量用法实例分析
Jul 09 PHP
PHP登录验证码的实现与使用方法
Jul 07 PHP
php中实现进程锁与多进程的方法
Sep 18 PHP
php自定义函数转换html标签示例
Sep 29 PHP
PHP正则表达式笔记与实例详解
May 09 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 PHP
PHP接入支付宝接口失效流程详解
Nov 10 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删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
2013/06/27 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
php实现的简单美国商品税计算函数
2015/07/13 PHP
浅谈PHP中new self()和new static()的区别
2017/08/11 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
PHP获取真实IP及IP模拟方法解析
2020/11/24 PHP
JavaScript 中的replace方法说明
2007/04/13 Javascript
jQuery 学习入门篇附实例代码
2010/03/16 Javascript
JsDom 编程小结
2011/08/09 Javascript
js动画(animate)简单引擎代码示例
2012/12/04 Javascript
js实例属性和原型属性示例详解
2014/11/23 Javascript
js实现遍历含有input的table实例
2015/12/07 Javascript
js仿微博实现统计字符和本地存储功能
2015/12/22 Javascript
AngularJS控制器之间的通信方式详解
2016/11/03 Javascript
JavaScript中Object值合并方法详解
2017/12/22 Javascript
Vue打包后出现一些map文件的解决方法
2018/02/13 Javascript
js中Object.defineProperty()方法的不详解
2018/07/09 Javascript
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
使用element-ui table expand展开行实现手风琴效果
2019/03/15 Javascript
Python的Asyncore异步Socket模块及实现端口转发的例子
2016/06/14 Python
Python计算斗牛游戏概率算法实例分析
2017/09/26 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
2018/04/18 Python
TensorFlow实现iris数据集线性回归
2018/09/07 Python
flask框架中的cookie和session使用
2021/01/31 Python
鼠标滚轮事件和Mac触控板双指事件
2019/12/23 HTML / CSS
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
英国领先的鞋类零售商和顶级品牌的官方零售商:Wynsors
2020/02/17 全球购物
一道SQL面试题
2012/12/31 面试题
给物业的表扬信
2014/01/21 职场文书
旷课检讨书1000字
2014/02/14 职场文书
致三级跳运动员加油稿
2015/07/21 职场文书
Python破解极验滑动验证码详细步骤
2021/05/21 Python
Windows安装Anaconda3的方法及使用过程详解
2021/06/11 Python
SQL基础的查询语句
2021/11/11 MySQL
JS class语法糖的深入剖析
2022/07/07 Javascript