У меня есть даты, поступающие из базы данных в двух форматах:
$tests[] = "2018-01-01";
$tests[] = "2018-01-01 12:34:56.789";
Можно ли преобразовать строки в DateTime, используя DateTime::createFromFormat
и игнорировать часть времени? Я хотел бы использовать минимальный код для обработки обоих случаев.
Вы можете использовать следующий формат:
"!Y-m-d+"
Вот так:
echo DateTime::createFromFormat("!Y-m-d+", "2018-01-01") ->format(DateTime::ATOM); // 2018-01-01T00:00:00+05:00
echo DateTime::createFromFormat("!Y-m-d+", "2018-01-01 12:34:56.789")->format(DateTime::ATOM); // 2018-01-01T00:00:00+05:00
!
символ сбрасывает все компоненты даты и времени слева от него до 1970-01-01 00:00:00. Без этого компоненты, не указанные в формате, устанавливаются на компоненты с текущего времени.+
символ указывает синтаксическому анализатору игнорировать завершающие символы в строке даты.Других решений пока нет …