我怎样才能得到这个输出
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
首先,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);
首先,您需要在日期字符串中包含 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);