Определение прошедшего времени

У меня два раза в PHP, и я хотел бы определить прошедшие часы и минуты. Например:

С 8:30 до 10:00 будет 1:30

Решением может быть использование strtotime для преобразования ваших дат / времени в метки времени:

 $first_str = '8:30'; $first_ts = strtotime($first_str); $second_str = '10:00'; $second_ts = strtotime($second_str); 

И тогда сделайте разницу:

 $difference_seconds = abs($second_ts - $first_ts); 

И получить результат в считанные минуты или часы:

 $difference_minutes = $difference_seconds / 60; $difference_hours = $difference_minutes / 60; var_dump($difference_minutes, $difference_hours); 

Ты получишь :

 int 90 float 1.5 

То, что вам теперь нужно выяснить, это показать это 😉

(отредактируйте, подумав немного больше)

Возможность отображения разницы может быть использована функция даты ; что-то вроде этого должно делать:

 date_default_timezone_set('UTC'); $date = date('H:i', $difference_seconds); var_dump($date); 

И я получаю:

 string '01:30' (length=5) 

Обратите внимание, что в моей системе мне пришлось использовать date_default_timezone_set чтобы установить часовой пояс для UTC – иначе я получал «02:30» вместо «01:30» – возможно, потому, что я во Франции и FR это локаль моей системы …

Вы можете использовать ответ на этот вопрос, чтобы преобразовать свое время в целочисленные значения, а затем выполнить вычитание. Оттуда вы захотите преобразовать этот результат в единицы-часы-минуты, но это не должно быть слишком сложно.

Используйте временную метку php для задания:

 echo date("H:i:s", ($end_timestamp - $start_timestamp)); 
 $d1=date_create()->setTime(8, 30); $d2=date_create()->setTime(10, 00); echo $d1->diff($d2)->format("%H:%i:%s"); 

В приведенном выше примере используются новые классы (ish) DateTime и DateInterval. Основными преимуществами этих классов являются то, что даты за пределами эпохи Unix больше не являются проблемой, а летнее время, високосные годы и различные другие случайные ситуации обрабатываются.

 $time1='08:30'; $time2='10:00'; list($h1,$m1) = explode(':', $time1); list($h2,$m2) = explode(':', $time2); $time_diff = abs(($h1*60+$m1)-($h2*60+$m2)); $time_diff = floor($time_diff/60).':'.floor($time_diff%60); echo $time_diff;