datetime — PHP вычисляет разницу между временем, превышающим 24 часа

Как лучше всего рассчитать разницу во времени, когда время больше 24 часов.

пример

$time1 = '76:00:00';
$time2 = '30:00:00';

// result should be 46:00:00
echo date('H:i:s', strtotime($time1) - strtotime($time2));

Но это не может быть сделано с этим, потому что его больше, чем 24 часа.

Также в базе данных я сохранил время как это: 33:30:00
Как в php я могу отформатировать его: 33:30

1

Решение

использование \DateTime а также \DateInterval выполнить расчеты:

$date1 = new \DateTime('now', new DateTimeZone('UTC'));
$date2 = new \DateTime('now', new DateTimeZone('UTC'));
$time1 = new \DateInterval('PT76H');
$time2 = new \DateInterval('PT30H');

$date1->add($time1);
$date2->add($time2);

$diff = $date1->diff($date2);
echo ($diff->days * 24 + $diff->h) . $diff->format(':%I:%S');

Объяснение:
Невозможно выполнить расчеты непосредственно на DateIntervals, поэтому вы должны создать даты в качестве основы для расчетов. Затем добавьте два разных интервала к текущим датам и рассчитайте разницу между ними. diff() возвращается \DateInterval содержит общее количество дней, которое нужно умножить на 24, чтобы получить часы, и часы, которые не составляют полных дней.

РЕДАКТИРОВАТЬ: часовой пояс должен быть указан как UTC, чтобы избежать проблем с переходом на летнее время.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector