在HH:MM格式php中获得时间差异

时间:2012-10-21 22:13:24

标签: php time datediff

我怎样才能输出

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:41米

2 个答案:

答案 0 :(得分:8)

首先,除非您使用8:21:00另行指定,否则DateTime::createFromFormat()将被解释为8 AM。

要计算时差,请使用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);

答案 1 :(得分:2)

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

现在两个日期之间的差异是2019即33h:19m,你不能使用标准日期格式,因为它们只支持24小时。您应该将$stat保留为整数,并将其显示为sprintf,如下所示:

echo sprintf('%02dh:%02dm', $stat/60, $stat%60);