@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.
Подскажите как решить данную проблему, добавлять дату не хотелось бы так как на это тратится больше времени
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
wagoodoogoo
@wagoodoogoo
prestahop, 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);
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Zelo Москва
от 130 000 руб.
Amigoweb Магнитогорск
от 40 000 до 70 000 руб.
АКМЭ сервис Санкт-Петербург
от 110 000 руб.
29 янв. 2020, в 01:16
500 руб./за проект
28 янв. 2020, в 21:42
5000 руб./за проект