Если у меня есть формат времени, например «14:30:00» («часы: минуты: секунды»), как мне получить DateInterval из строки?
Я могу получить DateTime:
$datetime= DateTime::createFromFormat("H:i:s","14:30:00");
Но мне нужно добавить его к другому объекту DateTime, а date_add нужен DateInterval.
Если вам нужен интервал, составляющий 14 часов и 30 минут, просто используйте конструктор …
$interval = new DateInterval('PT14H30M');
Разбить его …
P
– все интервальные спецификации должны начинаться с P
(для периода ). Мы не используем интервалы времени, хотя так … T
– это запускает спецификацию Time 30M
– 30 минут Если вы должны использовать строку 14:30:00 , я бы проанализировал ее с помощью sscanf
и использовал детали …
list($hours, $minutes, $seconds) = sscanf('14:30:00', '%d:%d:%d'); $interval = new DateInterval(sprintf('PT%dH%dM%dS', $hours, $minutes, $seconds));