получить разницу во времени в формате ЧЧ:ММ 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 м

Author: Kara, 2012-10-22

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);
 8
Author: Alex, 2012-10-21 23:17:58

Прежде всего, вам нужно включить 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);
 2
Author: dev-null-dweller, 2012-10-21 22:57:33