首页 > 语言 > PHP > 正文

php 计算两个日期之间的间隔天数

2024-09-04 11:45:23
字体:
来源:转载
供稿:网友

本文章来给各位同学详细介绍关于php 计算两个日期这间的间隔天数实例,各位同学可参考,我们一般是把日期用strtotime转换,然后再进行算,这样可以精确到时分秒。

例1,直接把日期转换,代码如下:

  1. function daysbetweendates($date1$date2){  
  2.     $date1 = strtotime($date1);  
  3.     $date2 = strtotime($date2);  
  4.     $days = ceil(abs($date1 - $date2)/86400);  
  5.     return $days;  

例2,代码如下:

  1. <?php 
  2. functionmaketime($date
  3. list($year,$month,$day) = explode('-',$date); 
  4. returnmktime(0,0,0,$month,$day,$year); 
  5. $date1 = '2007-01-08'
  6. $date2 = '2007-03-01'
  7. $d = (maketime($date2) - maketime($date1)) / (3600*24); 
  8. echo'相差$d 天'
  9. ?> 

例3,PHP实现两个日期间隔的年、月、周、日数的计算,代码如下:

  1. <?php 
  2.     function format($a,$b){ 
  3.         //检查两个日期大小,默认前小后大,如果前大后小则交换位置以保证前小后大 
  4.         if(strtotime($a)>strtotime($b)) list($a,$b)=array($b,$a); 
  5.         $start  = strtotime($a); 
  6.         $stop   = strtotime($b); 
  7.         $extend = ($stop-$start)/86400; 
  8.         $result['extends'] = $extend
  9.         if($extend<7){                //如果小于7天直接返回天数 
  10.             $result['daily'] = $extend
  11.         }elseif($extend<=31){        //小于28天则返回周数,由于闰年2月满足了 
  12.             if($stop==strtotime($a.'+1 month')){ 
  13.                 $result['monthly'] = 1; 
  14.             }else
  15.                 $w = floor($extend/7); 
  16.                 $d = ($stop-strtotime($a.'+'.$w.' week'))/86400; 
  17.                 $result['weekly']  = $w
  18.                 $result['daily']   = $d
  19.             } 
  20.         }else
  21.             $y=    floor($extend/365); 
  22.             if($y>=1){                //如果超过一年 
  23.                 $start = strtotime($a.'+'.$y.'year'); 
  24.                 $a     = date('Y-m-d',$start); 
  25.                 //判断是否真的已经有了一年了,如果没有的话就开减 
  26.                 if($start>$stop){ 
  27.                     $a = date('Y-m-d',strtotime($a.'-1 month')); 
  28.                     $m =11; 
  29.                     $y--;     
  30.                 } 
  31.                 $extend = ($stop-strtotime($a))/86400; 
  32.             } 
  33.             if(isset($m)){ 
  34.                 $w = floor($extend/7); 
  35.                 $d = $extend-$w*7; 
  36.             }else
  37.                 $m = isset($m)?$m:round($extend/30); 
  38.                 $stop>=strtotime($a.'+'.$m.'month')?$m:$m--; 
  39.                 if($stop>=strtotime($a.'+'.$m.'month')){ 
  40.                     $d=$w=($stop-strtotime($a.'+'.$m.'month'))/86400; 
  41.                     $w = floor($w/7); 
  42.                     $d = $d-$w*7; 
  43.                 } 
  44.             } 
  45.             $result['yearly']  = $y
  46.             $result['monthly'] = $m
  47.             $result['weekly']  = $w
  48.             $result['daily']   = isset($d)?$d:null; 
  49.         } 
  50.         return array_filter($result); 
  51.     } 
  52.  
  53.     print_r(format('2012-10-1','2012-12-15')); 
  54. ?>

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表