因为 PHP < 5.3 不支持DateInterval
该类,DateTime::diff()
(这是这样做的正确方法)不可用。您需要手动执行此操作才能使其在 5.2.x 中工作。
数学其实很简单:
// Get the difference between the two dates, in seconds
$diff = $future_date->format('U') - $now->format('U');
// Calculate the days component
$d = floor($diff / 86400);
$diff %= 86400;
// Calculate the hours component
$h = floor($diff / 3600);
$diff %= 3600;
// Calculate the minutes component
$m = floor($diff / 60);
// Calculate the seconds component
$s = $diff % 60;
// $d, $h, $m and $s now contain the values you want, so you can just build a
// string from them
$str = "$d d, $h h, $m m, $s s";
然而,对于较大的间隔,这将引入不准确,因为它没有考虑闰秒。这意味着您可能会结束几秒钟 - 但由于您的原始格式字符串不包含秒组件,我怀疑这对您正在做的事情太重要了。
另请注意,您需要从 中减去$now
,$future_date
而不是相反,否则结果将为负数。
看到它工作