【发布时间】:2014-03-23 21:10:20
【问题描述】:
我需要在 PHP 中显示两个日期之间的天、小时、分钟和秒的差异。我已经尝试过这里提供的建议:
Create Day, Hour, Minute and Second countdown in PHP
而且它们都给出了错误的结果。这是一个例子:
$startdate = "2014-03-20 12:34:56";
$enddate = "2014-04-01 13:34:56";
$diff = strtotime($enddate) - strtotime($startdate);
$temp = $diff/86400; // (60 sec/min * 60 min/hr * 24 hr/day = 86400 sec/day)
$dd = floor($temp); $temp = 24*($temp-$dd); //Days
$hh = floor($temp); $temp = 60*($temp-$hh); //Hours
$mm = floor($temp); $temp = 60*($temp-$mm); //Minutes
$ss = floor($temp); //Seconds
echo $dd." days\n".
$hh." hours\n".
$mm." minutes\n".
$ss." seconds";
我指定的两个时间戳的结果应该是:
11 days
1 hour
0 minutes
0 seconds
但是当我运行它时,它给了我:
12 days
0 hours
0 minutes
0 seconds
我该怎么做?
【问题讨论】:
-
使用 PHP 的 DateTime 类 php.net/manual/en/datetime.diff.php
-
也许是夏令时?
-
3 月有 31 天,所以您的预期可能是 12 天、1 小时 0 分 0 秒,而不是 11 天等。
-
date_create($startdate)->diff(date_create($enddate))->format('%a days %h hours %i minutes %s seconds')将是一种更现代的方法,并且会给出正确的结果,而不是自己做算术。 -
@salathe,在这种情况下,正确的结果取决于谁或什么使用它(见我的回答)。