У меня два раза в 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;