网站地图    收藏   

主页 > php专栏 > php日期 >

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

来源:自学PHP网    时间:2014-11-30 11:50 作者: 阅读:

[导读] 本文章来给各位同学详细介绍关于php 计算两个日期这间的间隔天数实例,各位同学可参考,我们一般是把日期用strtotime转换,然后再进行算,这样...

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

本文章来给各位同学详细介绍关于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. ?>

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论