Как лучше всего рассчитать разницу во времени, когда время больше 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
использование \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');
Объяснение:
Невозможно выполнить расчеты непосредственно на DateInterval
s, поэтому вы должны создать даты в качестве основы для расчетов. Затем добавьте два разных интервала к текущим датам и рассчитайте разницу между ними. diff()
возвращается \DateInterval
содержит общее количество дней, которое нужно умножить на 24, чтобы получить часы, и часы, которые не составляют полных дней.
РЕДАКТИРОВАТЬ: часовой пояс должен быть указан как UTC, чтобы избежать проблем с переходом на летнее время.
Других решений пока нет …