@maks78945

Как посчитать разницу между временем?

Добрый день! Есть 2 поля в которых указывается время (часы:минуты), к примеру время получение задачи, время закрытия задачи.
Получилось посчитать разницу вот таким способом
$date1 = new DateTime(20:55);
$date2 = new DateTime(21:65);
$interval = $date1->diff($date2);
echo $interval->format('%H:%I');


Результат вполне устраивал, но возникала сложность когда эти временные точки находятся в разных сутках, к примеру если $date1=25:51, а $date2=00:02, то в результате я получаю разницу в 23:49, но в действительности только 00:11.
Подскажите как решить данную проблему, добавлять дату не хотелось бы так как на это тратится больше времени
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
wagoodoogoo
@wagoodoogoo
prestashop, webix, phalcon, vue, slim, craft cms
Как это не хочется, а если задача через 6 дней закрыта?

Ну если совсем "в лоб":
$start = '20:55';
$end = '00:05';
$float_start = floatval(str_replace(':', '.', $start));
$float_end = floatval(str_replace(':', '.', $end));
if ($float_start < $float_end) {
    $date1 = new DateTime("2018-12-16 " . $start . ":00");
    $date2 = new DateTime("2018-12-16 " . $end . ":00");
    $interval = $date1->diff($date2);
} else {
    $date1 = new DateTime("2018-12-16 " . $start . ":00");
    $date2 = new DateTime("2018-12-17 " . $end . ":00");
    $interval = $date1->diff($date2);
}
echo $interval->format('%H:%I');
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
$date1 = new DateTime("2018-12-16 23:55:00");
$date2 = new DateTime("2018-12-17 00:09:00");
$interval = $date1->diff($date2);
print_r($interval);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы