получить разницу во времени в формате ЧЧ:ММ php
Как я могу получить это для вывода
ЧЧ: формат ММ?
$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 минут
Но я не могу понять, как заставить его выводить
21 час:41 м
2 answers
Во-первых, 8:21:00
будет интерпретироваться как 8 утра, если вы не указали иное, используя 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
как целое число и отобразить его с помощью sprintf
примерно так:
echo sprintf('%02dh:%02dm', $stat/60, $stat%60);