Php 两个日期之间的时间间隔
我使用以下代码查找两个日期之间的过去时间:Php 两个日期之间的时间间隔,php,Php,我使用以下代码查找两个日期之间的过去时间: $date1 = "1900-00-00"; $date2 = "2000-00-00"; $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 -
$date1 = "1900-00-00";
$date2 = "2000-00-00";
$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("%d years, %d months, %d daysn", $years, $months, $days);
但它打印的是100年,0个月,24天n
,而不是100年,0个月,0天n
发生了什么?您可以使用类的方法获取两个日期之间的差异。您不需要自己计算差异:
<?php
$date1 = "1900-00-00";
$date2 = "2000-00-00";
$dt1 = new DateTime($date1);
$dt2 = new DateTime($date2);
$diff = $dt1->diff($dt2);
printf("%d years, %d months, %d days", $diff->y, $diff->m, $diff->d);
//output: 100 years, 0 months, 0 days
演示:
以下是最简单的解决方案:-
$date1 = "1900-00-00";
$date2 = "2000-00-00";
$expDate = date_create($date2);
$todayDate = date_create($date1);
$diff = date_diff($todayDate, $expDate);
printf("%d years, %d months, %d days", $diff->y, $diff->m, $diff->d);
你会得到你期望的结果。有闰年,一年增加一天(每四年增加一天,所以有下限(99/4)闰日,这是你的24天,因为1900年和2000年不算闰年),还有闰秒。你不应该试图自己计算。如答案所示,使用
diff
方法。
$date1 = "1900-00-00";
$date2 = "2000-00-00";
$expDate = date_create($date2);
$todayDate = date_create($date1);
$diff = date_diff($todayDate, $expDate);
printf("%d years, %d months, %d days", $diff->y, $diff->m, $diff->d);