erpase
24.03.2023 - 17:49
Подскажите пожалуйста код, как решить возникшую проблемку.
Нужно произвести вычитание времени до миллисекунд.
Например
ч м с сот
00:15:30.25 - 00:02:25.11 и чтобы результат выводился в таком же временном формате 00:13:05.14
Пробовал через регулярные выражения удалять : а потом производить вычитание и обратно ставить символ : не подходит такой вариант. Секунды получаются до 100 а надо до 60 и сотые теряю.
Мне кажется нужно вычитание производить в временном формате, но пока не знаю как.
killer8080
25.03.2023 - 11:32
Цитата (erpase @ 24.03.2023 - 16:49) |
Пробовал через регулярные выражения удалять : а потом производить вычитание и обратно ставить символ : не подходит такой вариант. |
Было бы странно если бы подошло
Для работы с датами и временем есть специальный функционал
$dt1 = new DateTime('00:15:30.25');
$dt2 = new DateTime('00:02:25.11');
$interval = $dt1->diff($dt2, true);
echo $interval->format('%H:%I:%S.'). substr($interval->f, 2);
если разница в датах большая, то нужно будет ещё добавить вывод количества дней в format()
https://www.php.net/manual/ru/class.datetime.phphttps://www.php.net/manual/ru/class.dateinterval.phphttps://www.php.net/manual/ru/dateinterval.format.php
erpase
27.03.2023 - 11:31
Спасибо за объяснения и подсказку.
Гость_erpase
23.05.2023 - 17:17
Уважаемый killer8080
В вашем коде не выводятся сотые.
выводится вот такой результат 00:13:05.
часы, минуты, секунды считаются, а сотые нет.
killer8080
24.05.2023 - 07:44
Версия PHP должна быть не ниже 7.1.0 для данного кода, либо вместо
$interval->f
используй
$interval->format('%F')
Гость_erpase
24.05.2023 - 12:57
Обновил РНР до 8
Все отработало.
Супер.
Спасибо.