5

我怎样才能得到这个输出

HH:MM 格式?

 $to_time = strtotime("2008-12-13 10:42:00");  <--AM
 $from_time = strtotime("2008-12-14 8:21:00");  <-- PM
 $stat = round(abs($to_time - $from_time) / 60,2). "min";

我从中得到的是 1299 分钟

但我不知道如何让它输出

21h:41m

4

2 回答 2

8

首先,8:21:00将被解释为 8AM,除非您使用DateTime::createFromFormat().

要计算时差,请使用DateTime::diff()

$to = new DateTime("2008-12-13 10:42:00");
$from = new DateTime("2008-12-14 8:21:00");

$stat = $to->diff($from); // DateInterval object

echo $stat->format('%Hh:%Im');

这将显示两次之间的小时/分钟差异,但最多只能显示 24 小时。

如果您需要超过 24 小时,您应该执行以下操作:

$hours   = $stat->days * 24 + $stat->h;
$minutes = $stat->i;

printf('%02sh:%sm', $hours, $minutes);
于 2012-10-21T22:27:36.650 回答
2

首先,您需要在日期字符串中包含 AM 和 PM,否则2008-12-14 8:21:00将被解释为8:21 AM

现在两个日期之间的区别2019是 33h:19m,你不能使用标准日期格式,因为它们只支持 24h 时钟。你应该保持$stat整数,并sprintf像这样显示它:

echo sprintf('%02dh:%02dm', $stat/60, $stat%60);
于 2012-10-21T22:57:33.823 回答