当前位置:首页 > PHP教程 > php日期 > 列表

PHP学习之校验日期格式合法性?(使用strtotime()和date())

发布:smiling 来源: PHP粉丝网  添加日期:2020-03-31 18:14:56 浏览: 评论:0 

本篇文章主要讲述了用PHP来校验日期格式是否合法,具有一定参考价值,有需要的朋友可以了解一下,希望能帮到你。

在后端开发中,我们常常需要校验前端传入参数的合法性,如果是校验日期参数,我们可以通过下面的方法来校验:

  1. /** 
  2.  
  3.  * 校验日期格式是否合法 
  4.  
  5.  * @param string $date 
  6.  
  7.  * @param array $formats 
  8.  
  9.  * @return bool 
  10.  
  11.  */ 
  12.  
  13. function isDateValid($date$formats = array('Y-m-d''Y/m/d')) { 
  14.  
  15.   
  16.  
  17.     $unixTime = strtotime($date); 
  18.  
  19.     if(!$unixTime) { //无法用strtotime转换,说明日期格式非法 
  20.  
  21.         return false; 
  22.  
  23.     } 
  24.  
  25.   
  26.  
  27.     //校验日期合法性,只要满足其中一个格式就可以 
  28.  
  29.     foreach ($formats as $format) { 
  30.  
  31.         if(date($format$unixTime) == $date) { 
  32.  
  33.             return true; 
  34.  
  35.         } 
  36.  
  37.     } 
  38.  
  39.   
  40.  
  41.     return false; 
  42.  

说明:为什么只用strtotime()函数是无法准确校验时间呢?

因为只要格式正确的日期用strtotime()都能将其转成时间戳,比如2018-02-31这个日期,其实逻辑上来说这个日期是不存在的,但是在strtotime()函数依然能将其成功转成时间戳,所以我们需要将时间戳用date()转成标准格式,然后和传入的日期进行比对,如果不相等,说明这个传入的日期也是不合法的。

PHP本身也有校验时间的函数checkdate(),这个函数需要三个参数,分别是月、日、年。比如上面的日期可以这样调用checkdate函数检测

  1. if(checkdate(2, 31, 2018)) { 
  2.  
  3.     echo '日期格式正确'
  4.  
  5. else { 
  6.  
  7.     echo '日期格式不正确'
  8.  

Tags: strtotime date()

分享到: