我怎样才能输出
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米
答案 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);