[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вычитание времени
erpase
Подскажите пожалуйста код, как решить возникшую проблемку.
Нужно произвести вычитание времени до миллисекунд.
Например
ч м с сот
00:15:30.25 - 00:02:25.11 и чтобы результат выводился в таком же временном формате 00:13:05.14
Пробовал через регулярные выражения удалять : а потом производить вычитание и обратно ставить символ : не подходит такой вариант. Секунды получаются до 100 а надо до 60 и сотые теряю.
Мне кажется нужно вычитание производить в временном формате, но пока не знаю как.
killer8080
Цитата (erpase @ 24.03.2023 - 16:49)
Пробовал через регулярные выражения удалять : а потом производить вычитание и обратно ставить символ : не подходит такой вариант.

Было бы странно если бы подошло user posted image
Для работы с датами и временем есть специальный функционал

$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.php
https://www.php.net/manual/ru/class.dateinterval.php
https://www.php.net/manual/ru/dateinterval.format.php
erpase
Спасибо за объяснения и подсказку.
Гость_erpase
Уважаемый killer8080

В вашем коде не выводятся сотые.
выводится вот такой результат 00:13:05.
часы, минуты, секунды считаются, а сотые нет.
killer8080
Версия PHP должна быть не ниже 7.1.0 для данного кода, либо вместо
$interval->f

используй
$interval->format('%F')
Гость_erpase
Обновил РНР до 8
Все отработало.
Супер.
Спасибо.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.