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作的文本留言本的例子(四)
Oct 09 PHP
BBS(php & mysql)完整版(三)
Oct 09 PHP
php获取用户IPv4或IPv6地址的代码
Nov 15 PHP
PHP代码保护--Zend Guard的使用详解
Jun 03 PHP
php实现保存submit内容之后禁止刷新
Mar 19 PHP
PHP将字符分解为多个字符串的方法
Nov 22 PHP
前端必学之PHP语法基础
Jan 01 PHP
PHP magento后台无法登录问题解决方法
Nov 24 PHP
PHP的反射机制实例详解
Mar 29 PHP
实例分析10个PHP常见安全问题
Jul 09 PHP
Laravel框架查询构造器 CURD操作示例
Sep 04 PHP
php实现断点续传大文件示例代码
Jun 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
php 生成文字png图片的代码
2011/04/17 PHP
php学习之数据类型之间的转换代码
2011/05/29 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
2014/06/12 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
php远程下载类分享
2016/04/13 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
使用JQUERY Tabs插件宿主IFRAMES
2010/01/01 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
jQuery对指定元素中指定字符串进行替换的方法
2015/03/17 Javascript
用JavaScript实现对话框的教程
2015/06/04 Javascript
实例详解jQuery Mockjax 插件模拟 Ajax 请求
2016/01/12 Javascript
基于jQuery倒计时插件实现团购秒杀效果
2016/05/13 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
运用jQuery写的验证表单(实例讲解)
2017/07/06 jQuery
深入学习nodejs中的async模块的使用方法
2017/07/12 NodeJs
Vue 页面切换效果之 BubbleTransition(推荐)
2018/04/08 Javascript
微信小程序左滑动显示菜单功能的实现
2018/06/14 Javascript
如何根据业务封装自己的功能组件
2019/04/19 Javascript
微信小程序class封装http代码实例
2019/08/24 Javascript
Python MySQLdb模块连接操作mysql数据库实例
2015/04/08 Python
深入理解Python中各种方法的运作原理
2015/06/15 Python
python3音乐播放器简单实现代码
2020/04/20 Python
python魔法方法-自定义序列详解
2016/07/21 Python
Python自动发邮件脚本
2017/03/31 Python
Python爬虫_城市公交、地铁站点和线路数据采集实例
2018/01/10 Python
Python求区间正整数内所有素数之和的方法实例
2020/10/13 Python
利用python实现汉诺塔游戏
2021/03/01 Python
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
2014/09/02 HTML / CSS
萨克斯第五大道英国:Saks Fifth Avenue英国
2019/04/01 全球购物
军训学生自我鉴定
2014/02/12 职场文书
安全大检查实施方案
2014/02/22 职场文书
2014年组织委员工作总结
2014/12/01 职场文书
幼儿园老师工作总结2015
2015/05/22 职场文书
电工生产实习心得体会
2016/01/22 职场文书
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python
MySQL 可扩展设计的基本原则
2021/05/14 MySQL