返回PHP中两个日期的差异

时间:2013-08-07 10:28:56

标签: php date strtotime

我需要将过去/未来日期与PHP中的当前日期进行比较,并在“4小时直到”或“2天3小时直到”或“5小时前”格式中显示差异。可选地,在“-4h”(这是坏的)或“4h”(这是好的)格式。

所以在一个例子中:

x = $expiry_date - $todays_date

如果结果是积极的,例如。 $ expiry_date将来是4小时,x =“4小时后去”或“4小时”。如果结果是否定的,例如“4小时前”或“-4小时”。

任何其他类似的声音结果格式都可以。

请帮忙吗?

3 个答案:

答案 0 :(得分:3)

参考Dates diff in PHP

$date1 = "2013-08-11";
$date2 = "2012-07-12";

$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 days\n", $years, $months, $days);

$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 "; 

//or simply
//echo "difference " . $interval->days . " days ";

答案 1 :(得分:1)

您可以使用Carbon库执行此操作。 它会是这样的:

$now = Carbon::now();
$then = Carbon::create(2013, 8, 8, 23, 26, 11);
echo $now->diffForHumans($then);     

输出将是一个人类可读的字符串,就像您正在寻找的那样。

答案 2 :(得分:0)

请参阅this question

变量将包含以秒为单位的差异,然后您可以根据需要进行划分以获得分钟/小时/天等。除以60得到分钟,60除以得到小时等。然后做一些简单的值检查以根据需要格式化。