【发布时间】:2013-04-23 03:56:27
【问题描述】:
我的代码无法显示正确的日期差异时遇到问题。 Days Minutes 和 Seconds 都可以正常工作,但 Hours 似乎显示的是减去的数量,而不是剩余部分,如果这有意义的话。
例如,使用这些日期 2171167 = 2013-05-18 00:00:00 - 2013-04-22 20:53:53
我收到以下输出 25天19:06:07
$date_one = date('Y-m-d H:i:s');
$date_two = date('Y-m-d H:i:s', mktime(0, 0, 0, 5, 18, 2013));
$Difference = abs(strtotime($date_two) - strtotime($date_one));
$Days = date("d", $Difference);
//$Hours = date("H", $Difference); Why does this NOT WORK???
$Minutes = date("i", $Difference);
$Seconds = date("s", $Difference);
如果您能告诉我为什么我注释掉的第二个“小时”变量不起作用,我将不胜感激。
【问题讨论】:
-
被注释掉的行不返回 19 吗?它返回了什么?
-
它返回 19,我相信在这种情况下应该是 3。
-
是的,当天 20:53:53 的剩余时间是 03:06:07
-
然后它转换为洛杉矶时区而不是您当地的时区。但
date()的参数始终是 Unix 时间戳,即 UTC。 -
这就是为什么 PHP 有一个
DateInterval类来处理时间段的原因。