2016-10-03 125 views
0

我计算两个日期的这样的区别:PHP - 如何四舍五入日期

$date1= $_POST['dob']; 
$date2= $_POST['dor']; 

$date1 = date_create($date1); 
$date2 = date_create($date2); 


$diff = $date1->diff($date2); 
echo "<p> The difference is " . $diff->format('%y Years, %m month, %d days') . "</p>"; 

现在,我想如果差作为计算的差异围捕,例如:

40年,0个月,01天

我希望这被视为'41年'。任何高于一年的事情都会使其汇总。

任何解决方案?

+0

怎么会是41年?当它比前一年多一天时?你究竟想要做什么? –

回答

2

只是检查是否有一个月或一天,如果只是增加一个年:

//..... 
$diff = $date1->diff($date2); 
$year = (int) $diff->format('%y'); 
if (((int)$diff->format('%m')) || ((int)$diff->format('%d'))) { 
    $year++; 
} 

echo "<p> The difference is " . $year . " years </p>"; 
+0

你好nospor,谢谢你,这对我来说非常合适。 – Majid

+0

不客气:) – nospor

0

试试这个,从日期的不同获得天,365(1年)分裂,并ceil (向上舍入)分数天。

$date1 = "2016-04-05"; 
$date2 = "2088-05-05"; 
$date1 = date_create($date1); 
$date2 = date_create($date2); 

$diff = $date1->diff($date2); 
//var_dump($diff); 
$years = $diff->y; 
$moths = $diff->m; 
$days = $diff->d; 
$hour = $diff->h; 
$minits = $diff->i; 
$second = $diff->s; 
if($moths > 0 || $days > 0 || $hour > 0 || $minits > 0 || $second > 0) 
{ 
    $years++; 
} 
echo "<p> The difference is " . $years . " years </p>"; 

DEMO

+0

戴夫有些年有366天,所以你会有错误的结果 – nospor

+0

@nospor:感谢纠正我 – Dave

+0

不客气:) – nospor