как я могу получить это для вывода
HH: формат ММ?
$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
что составляет 33ч: 19 м, вы не можете иметь стандартные форматы даты, так как они поддерживают только 24 часа. Вы должны сохранить $stat
как integer и отобразить его с помощью sprintf
следующим образом:
echo sprintf('%02dh:%02dm', $stat/60, $stat%60);