php计算两个日期之间的天数2017-12-21 14:29
我有两个日期:
开始日期: 2007-03-24
结束日期: 2009-06-26
现在我需要找到这两者之间的区别在以下形式:
2年,3个月,2天
要如何才能在PHP中做到这一点?
我们可以使用strtotime()将两个日期转换为unix时间,然后计算它们之间的秒数,由此计算不同的时间段就相当的容易了。
$date1 = "2007-03-24";
$date2 = "2009-06-26";
$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);
显然,以上方法最好是在php5.3以上版运行更好。
建议使用DateTime和DateInterval对象。
$date1 = new DateTime("2007-03-24");
$date2 = new DateTime("2009-06-26");
$interval = $date1->diff($date2);
echo "difference " . $interval->y . " years, " . $interval->m." months, ".$interval->d." days ";
// shows the total amount of days (not divided into years, months and days like above)
echo "difference " . $interval->days . " days ";
从PHP 5.2.2开始,可以使用比较运算符来比较DateTime对象。
$date1 = new DateTime("now");
$date2 = new DateTime("tomorrow");
var_dump($date1 == $date2); // bool(false)
var_dump($date1 < $date2); // bool(true)
var_dump($date1 > $date2); // bool(false)