PHP校验日期格式是否合法
在后端开发中,我们常常需要校验前端传入参数的合法性,如果是校验日期参数,我们可以通过下面的方法来校验:
/**
* 校验日期格式是否合法
* @param string $date
* @param array $formats
* @return bool
*/
function isDateValid($date, $formats = array('Y-m-d', 'Y/m/d')) {
$unixTime = strtotime($date);
if(!$unixTime) { //无法用strtotime转换,说明日期格式非法
return false;
}
//校验日期合法性,只要满足其中一个格式就可以
foreach ($formats as $format) {
if(date($format, $unixTime) == $date) {
return true;
}
}
return false;
}
说明:
为什么只用strtotime()函数是无法准确校验时间呢?
因为只要格式正确的日期用strtotime()都能将其转成时间戳,比如2018-02-31这个日期,其实逻辑上来说这个日期是不存在的,但是在strtotime()函数依然能将其成功转成时间戳,所以我们需要将时间戳用date()转成标准格式,然后和传入的日期进行比对,如果不相等,说明这个传入的日期也是不合法的。
PHP本身也有校验时间的函数checkdate()
,这个函数需要三个参数,分别是月、日、年。比如上面的日期可以这样调用checkdate函数检测
if(checkdate(2, 31, 2018)) {
echo '日期格式正确';
} else {
echo '日期格式不正确';
}
PHP校验日期格式是否合法的更多相关文章
- Linux C判断日期格式是否合法
Title:Linux C判断日期格式是否合法 --2013-10-11 11:54 #include <string.h> // strlen() , strncpy() #includ ...
- 校验日期格式为yyyy-MM-dd
/** * 校验时间 * * @param text * @return */ public static boolean checkTime(String text) { DateFormat fo ...
- Java校验8位字符串是否为正确的日期格式
import java.text.ParseException; import java.text.SimpleDateFormat; /** * 校验8位字符串是否为正确的日期格式 * @autho ...
- 用JavaScript校验日期的合法性
校验表单时可能会遇到校验日期是否正确.可以利用JS的内置对象Date帮助我们完成日期校验. 思路是首先用被校验日期(假设为A,可能为字符串或数字)创建一个Date对象(假设为B). 然后判断A和B的年 ...
- Java通过jxl解析Excel文件入库,及日期格式处理方式 (附源代码)
JAVA可以利用jxl简单快速的读取文件的内容,但是由于版本限制,只能读取97-03 xls格式的Excel. 本文是项目中用到的一个实例,先通过上传xls文件(包含日期),再通过jxl进行读取上传 ...
- Java判断字符串是否符合yyyyMMdd日期格式
Java判断字符串是否符合yyyyMMdd日期格式 代码: /** * 判断参数的格式是否为“yyyyMMdd”格式的合法日期字符串 * */ public static boolean isVali ...
- mongodb中批量将时间戳转变通用日期格式
1,官网提供的mongodb遍历脚本: 官方文档地址:https://docs.mongodb.org/manual/tutorial/remove-documents/ >var arr = ...
- SpringMVC初始化参数绑定--日期格式
一.初始化参数绑定[一种日期格式] 配置步骤: ①:在applicationcontext.xml中只需要配置一个包扫描器即可 <!-- 包扫描器 --> <context:comp ...
- AngularJS过滤器filter-时间日期格式-渲染日期格式-$filter
今天遇到了这些问题索性就 写篇文章吧 话不多说直接上栗子 不管任何是HTML格式还是JS格式必须要在 controller 里面写 // new Date() 获取当前时间 yyyy-MM-ddd ...
随机推荐
- https://github.com/commonsguy/cw-omnibus.git
https://github.com/commonsguy/cw-omnibus.git
- Access restriction 问题解决
最近导入新项目,导入所有用到的jar包,发现其中一个引用报错 import com.sun.istack.internal.Nullable; 具体信息如下: Access restriction: ...
- MySQL InnoDB引擎B+树索引简单整理说明
本文出处:http://www.cnblogs.com/wy123/p/7211742.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错 ...
- rpm包安装的nginx热升级
文章目录一.本地环境基本介绍二.yum升级命令说明三.升级好nginx后如何不中断业务切换3.1.nginx相关的信号说明3.2.在线热升级nginx可执行文件程序一.本地环境基本介绍本次测试环境,是 ...
- python--第十天总结(IO多路复用)
服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型. (2)同步非阻塞IO(Non-blocking IO):默认创建的s ...
- react组件回顶部
在挂载更新里面判断滚动条的距离(滚动条不能overflow: auto 踩坑) componentDidMount(){ window.addEventListener('scroll' , ()=& ...
- [leetcode]20. Valid Parentheses有效括号序列
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...
- jameter一般关注的指标
对于B/S架构软件,一般会关注如下web服务性指标. 1.Avg Rps:平均每秒钟的响应次数==总请求次数 / 秒数 2.Avg time to last byte per terstion ( ...
- vue.js中内联样式style三元表达式
<span v-bind:style="{'display':config.isHaveSearch ? 'block':'none'}" >搜索</span&g ...
- webapi 重复提交问题
https://izen.live/Blog/info/13.html /// <summary> /// action方法过滤器 /// </summary> public ...