получить разницу во времени в формате HH: MM php

как я могу получить это для вывода

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);