分享PHP计算两个日期相差天数的代码
本文实例讲述了php计算两个日期相差天数的方法。分享给大家供大家参考。具体实现方法如下:
<?php $date1=date('Y-m-d'); $date2="2015-12-04"; $diff=abs(strtotime($date2)-strtotime($date1)); $years=floor($diff/(365*60*60*24)); $months=floor(($diff-$years*365*60*60*24)/(30*60*60*24)); $days=floor(($diff-$years*365*60*60*24-$months*30*60*60*24)/(60*60*24)); printf("%dyears,%dmonths,%ddays\n",$years,$months,$days); --------------------------------------------------------OR $date1=newDateTime("2007-03-24"); $date2=newDateTime("2009-06-26"); $interval=$date1->diff($date2); echo"difference".$interval->y."years,".$interval->m."months,".$interval->d."days"; //showsthetotalamountofdays(notdividedintoyears,monthsanddayslikeabove) echo"difference".$interval->days."days"; --------------------------------------------------------OR /** *Calculatedifferencesbetweentwodateswithprecisesemantics.BasedonPHPsDateTime::diff() *implementationbyDerickRethans.PortedtoPHPbyEmilH,2011-05-02.Norightsreserved. */ function_date_range_limit($start,$end,$adj,$a,$b,$result) { if($result[$a]<$start){ $result[$b]-=intval(($start-$result[$a]-1)/$adj)+1; $result[$a]+=$adj*intval(($start-$result[$a]-1)/$adj+1); } if($result[$a]>=$end){ $result[$b]+=intval($result[$a]/$adj); $result[$a]-=$adj*intval($result[$a]/$adj); } return$result; } function_date_range_limit_days($base,$result) { $days_in_month_leap=array(31,31,29,31,30,31,30,31,31,30,31,30,31); $days_in_month=array(31,31,28,31,30,31,30,31,31,30,31,30,31); _date_range_limit(1,13,12,"m","y",&$base); $year=$base["y"]; $month=$base["m"]; if(!$result["invert"]){ while($result["d"]<0){ $month--; if($month<1){ $month+=12; $year--; } $leapyear=$year%400==0||($year%100!=0&&$year%4==0); $days=$leapyear?$days_in_month_leap[$month]:$days_in_month[$month]; $result["d"]+=$days; $result["m"]--; } }else{ while($result["d"]<0){ $leapyear=$year%400==0||($year%100!=0&&$year%4==0); $days=$leapyear?$days_in_month_leap[$month]:$days_in_month[$month]; $result["d"]+=$days; $result["m"]--; $month++; if($month>12){ $month-=12; $year++; } } } return$result; } function_date_normalize($base,$result) { $result=_date_range_limit(0,60,60,"s","i",$result); $result=_date_range_limit(0,60,60,"i","h",$result); $result=_date_range_limit(0,24,24,"h","d",$result); $result=_date_range_limit(0,12,12,"m","y",$result); $result=_date_range_limit_days(&$base,&$result); $result=_date_range_limit(0,12,12,"m","y",$result); return$result; } /** *Acceptstwounixtimestamps. */ function_date_diff($one,$two) { $invert=false; if($one>$two){ list($one,$two)=array($two,$one); $invert=true; } $key=array("y","m","d","h","i","s"); $a=array_combine($key,array_map("intval",explode("",date("YmdHis",$one)))); $b=array_combine($key,array_map("intval",explode("",date("YmdHis",$two)))); $result=array(); $result["y"]=$b["y"]-$a["y"]; $result["m"]=$b["m"]-$a["m"]; $result["d"]=$b["d"]-$a["d"]; $result["h"]=$b["h"]-$a["h"]; $result["i"]=$b["i"]-$a["i"]; $result["s"]=$b["s"]-$a["s"]; $result["invert"]=$invert?1:0; $result["days"]=intval(abs(($one-$two)/86400)); if($invert){ _date_normalize(&$a,&$result); }else{ _date_normalize(&$b,&$result); } return$result; } $date="2014-12-0419:37:22"; echo'<pre>'; print_r(_date_diff(strtotime($date),time())); echo'</pre>'; ?>
希望本文所述对大家学习php程序设计有所帮助。