(5) php校验时间的合法性 && work attitude 20151020 ):

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pandajava/article/details/49277309


1.工作态度 ) :

vi中使用过程中无意增加了i 导致sql出错,复制粘贴错位置致使sql出错。

使用vim要非常注意,一不小心就会有bug,且测试不一定测试出来。如下两处错误说明 工作态度不够认真



2.


3.

 static public function validate_Date($date, $format = 'Y-m-d H:i:s'){
                    $nums = strtotime($date);
                    if($nums){
                      $d = date($format, strtotime($date));
                      return $d == $date ;
                    }else{
                      return false;
                    }
          }

//组织查询时间区间数据
  $q_start = null;
  $q_end = null;
  if( empty($useid) && !empty($ps['timespan'])){
     $timespan_arr = json_decode($ps['timespan'],true);
     if(!$timespan_arr || !array_key_exists( 'start',$timespan_arr)
		       || !array_key_exists( 'end',$timespan_arr)
		       || !Specuser::validate_Date($timespan_arr['start'])
		       || !Specuser::validate_Date($timespan_arr['end'])
		       || strtotime($timespan_arr['end'])-strtotime($timespan_arr['start'])<0
		       || strtotime($timespan_arr['end'])-strtotime($timespan_arr['start'])>7776000 ){     
	  //timespan转数组失败或数组key中不含有start、end或日期格式不对或日期区间大约90(86400*90)天或    减为负数,则报错返回
	  $data->e = Error::get('ERR_PARAMS');
	  $data->cost = $this->get_cost();
	  return $data;
     }else{
	$q_start = $timespan_arr['start'];
	$q_end = $timespan_arr['end'];
     }

 }

转载php检测合法的日期字符串   http://blog.csdn.net/ctc506020246/article/details/22353461

在网上看了这么多解答,还是php官网的这种方法一最好用,感谢glavic at gmail dot com 

但是官网的方法只适合PHP>5.3的,对于比较低级的版本会出现错误:Call to undefined method DateTime::createfromformat()

解决方法一:

http://www.reportico.org/swsite/site/forum/viewtopic.php?f=7&t=9161

解决方法二:

[php]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. function checkDatetime($str$format="Y-m-d H:i:s"){  
  2.            $unixTime  =  strtotime($str);  
  3.            $checkDate date($format$unixTime);  
  4.            if($checkDate == $str)  
  5.               return 1;  
  6.            else  
  7.               return 0;  
  8.        }  

With DateTime you can make the shortest date&time validator for all formats.

[php]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?php  
  2.   
  3. function validateDate($date$format = 'Y-m-d H:i:s')  
  4. {  
  5.     $d = DateTime::createFromFormat($format$date);  
  6.     return $d && $d->format($format) == $date;  
  7. }  
  8.   
  9. var_dump(validateDate('2012-02-28 12:12:12')); # true  
  10. var_dump(validateDate('2012-02-30 12:12:12')); # false  
  11. var_dump(validateDate('2012-02-28''Y-m-d')); # true  
  12. var_dump(validateDate('28/02/2012''d/m/Y')); # true  
  13. var_dump(validateDate('30/02/2012''d/m/Y')); # false  
  14. var_dump(validateDate('14:50''H:i')); # true  
  15. var_dump(validateDate('14:77''H:i')); # false  
  16. var_dump(validateDate(14, 'H')); # true  
  17. var_dump(validateDate('14''H')); # true  
  18.   
  19. var_dump(validateDate('2012-02-28T12:12:12+02:00''Y-m-d\TH:i:sP')); # true  
  20. or  
  21. var_dump(validateDate('2012-02-28T12:12:12+02:00', DateTime::ATOM)); # true  
  22.   
  23. var_dump(validateDate('Tue, 28 Feb 2012 12:12:12 +0200''D, d M Y H:i:s O')); # true  
  24. or  
  25. var_dump(validateDate('Tue, 28 Feb 2012 12:12:12 +0200', DateTime::RSS)); # true  
  26. var_dump(validateDate('Tue, 27 Feb 2012 12:12:12 +0200', DateTime::RSS)); # false  
  27. # ...  


With DateTime you can make the shortest date&time validator for all formats.

[php]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?php  
  2.   
  3. function validateDate($date$format = 'Y-m-d H:i:s')  
  4. {  
  5.     $d = DateTime::createFromFormat($format$date);  
  6.     return $d && $d->format($format) == $date;  
  7. }  
  8.   
  9. var_dump(validateDate('2012-02-28 12:12:12')); # true  
  10. var_dump(validateDate('2012-02-30 12:12:12')); # false  
  11. var_dump(validateDate('2012-02-28''Y-m-d')); # true  
  12. var_dump(validateDate('28/02/2012''d/m/Y')); # true  
  13. var_dump(validateDate('30/02/2012''d/m/Y')); # false  
  14. var_dump(validateDate('14:50''H:i')); # true  
  15. var_dump(validateDate('14:77''H:i')); # false  
  16. var_dump(validateDate(14, 'H')); # true  
  17. var_dump(validateDate('14''H')); # true  
  18.   
  19. var_dump(validateDate('2012-02-28T12:12:12+02:00''Y-m-d\TH:i:sP')); # true  
  20. or  
  21. var_dump(validateDate('2012-02-28T12:12:12+02:00', DateTime::ATOM)); # true  
  22.   
  23. var_dump(validateDate('Tue, 28 Feb 2012 12:12:12 +0200''D, d M Y H:i:s O')); # true  
  24. or  
  25. var_dump(validateDate('Tue, 28 Feb 2012 12:12:12 +0200', DateTime::RSS)); # true  
  26. var_dump(validateDate('Tue, 27 Feb 2012 12:12:12 +0200', DateTime::RSS)); # false  
  27. # ...  


猜你喜欢

转载自blog.csdn.net/pandajava/article/details/49277309
今日推荐