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 相关文章推荐
实用函数5
Nov 08 PHP
php PDO中文乱码解决办法
Jul 20 PHP
php数组去重的函数代码
Feb 03 PHP
基于php socket(fsockopen)的应用实例分析
Jun 02 PHP
PHP 验证码不显示只有一个小红叉的解决方法
Sep 30 PHP
php数组中包含中文的排序方法
Jun 03 PHP
分享一个php 的异常处理程序
Jun 22 PHP
php+curl 发送图片处理代码分享
Jul 09 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
Dec 05 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
Dec 25 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
Oct 22 PHP
PHP设计模式概论【概念、分类、原则等】
May 01 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
《斗罗大陆》六翼天使武魂最强,为什么老千家不是上三宗?
2020/03/02 国漫
php FPDF类库应用实现代码
2009/03/20 PHP
PHP得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
php时间戳转换的示例
2014/03/31 PHP
PHP中模糊查询并关联三个select框
2017/06/19 PHP
node.js中的http.response.getHeader方法使用说明
2014/12/14 Javascript
javascript面向对象程序设计(一)
2015/01/29 Javascript
Vue.js实现拖放效果的实例
2016/09/30 Javascript
JavaScript中的遍历详解(多种遍历)
2017/04/07 Javascript
Angularjs验证用户输入的字符串是否为日期时间
2017/06/01 Javascript
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
2018/01/09 Javascript
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
ES6的解构赋值实例详解
2019/05/06 Javascript
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
python实现目录树生成示例
2014/03/28 Python
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
2015/04/01 Python
Python中list列表的一些进阶使用方法介绍
2015/08/15 Python
PyCharm在win10的64位系统安装实例
2017/11/26 Python
TensorFlow实现MLP多层感知机模型
2018/03/09 Python
Python实现求解一元二次方程的方法示例
2018/06/20 Python
python中正则表达式与模式匹配
2019/05/07 Python
python实现得到当前登录用户信息的方法
2019/06/21 Python
为什么python比较流行
2020/06/19 Python
Python TestSuite生成测试报告过程解析
2020/07/23 Python
Python Merge函数原理及用法解析
2020/09/16 Python
澳大利亚在线百货商店:Real Smart
2017/08/13 全球购物
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
护士个人简历自荐信
2013/10/18 职场文书
人力资源部门的主要职能
2014/02/22 职场文书
观看信仰心得体会
2014/09/04 职场文书
2014年党支部书记工作总结
2014/12/04 职场文书
《曹冲称象》教学反思
2016/02/20 职场文书
试了下Golang实现try catch的方法
2021/07/01 Golang