本文章來給各位同學詳細介紹關於php 計算兩個日期這間的間隔天數實例,各位同學可參考,我們一般是把日期用strtotime轉換,然後再進行算,這樣可以精確到時分秒去哦。
例1
直接把日期轉換
代碼如下
復制代碼
function daysbetweendates($date1, $date2){
$date1 = strtotime($date1);
$date2 = strtotime($date2);
$days = ceil(abs($date1 - $date2)/86400);
return $days;
}
例2
代碼如下
復制代碼
<?php
functionmaketime($date)
{
list($year,$month,$day) = explode('-',$date);
returnmktime(0,0,0,$month,$day,$year);
}
$date1 = '2007-01-08';
$date2 = '2007-03-01';
$d = (maketime($date2) - maketime($date1)) / (3600*24);
echo'相差$d 天';
?>
例3
PHP實現兩個日期間隔的年、月、周、日數的計算
代碼如下
復制代碼
<?php
function format($a,$b){
//檢查兩個日期大小,默認前小後大,如果前大後小則交換位置以保證前小後大
if(strtotime($a)>strtotime($b)) list($a,$b)=array($b,$a);
$start = strtotime($a);
$stop = strtotime($b);
$extend = ($stop-$start)/86400;
$result['extends'] = $extend;
if($extend<7){ //如果小於7天直接返回天數
$result['daily'] = $extend;
}elseif($extend<=31){ //小於28天則返回周數,由於閏年2月滿足了
if($stop==strtotime($a.'+1 month')){
$result['monthly'] = 1;
}else{
$w = floor($extend/7);
$d = ($stop-strtotime($a.'+'.$w.' week'))/86400;
$result['weekly'] = $w;
$result['daily'] = $d;
}
}else{
$y= floor($extend/365);
if($y>=1){ //如果超過一年
$start = strtotime($a.'+'.$y.'year');
$a = date('Y-m-d',$start);
//判斷是否真的已經有了一年了,如果沒有的話就開減
if($start>$stop){
$a = date('Y-m-d',strtotime($a.'-1 month'));
$m =11;
$y--;
}
$extend = ($stop-strtotime($a))/86400;
}
if(isset($m)){
$w = floor($extend/7);
$d = $extend-$w*7;
}else{
$m = isset($m)?$m:round($extend/30);
$stop>=strtotime($a.'+'.$m.'month')?$m:$m--;
if($stop>=strtotime($a.'+'.$m.'month')){
$d=$w=($stop-strtotime($a.'+'.$m.'month'))/86400;
$w = floor($w/7);
$d = $d-$w*7;
}
}
$result['yearly'] = $y;
$result['monthly'] = $m;
$result['weekly'] = $w;
$result['daily'] = isset($d)?$d:null;
}
return array_filter($result);
}
print_r(format('2012-10-1','2012-12-15'));
?>