Это частая задача возникает при чтении логов, пользовательских данных и .т.п. PHP даёт пару отличных инструментов, для её решения.
Функция strtotime()
Эта функция с довольно сложным функционалом, пытается определить не только формат пользовательского ввода, но и провести некоторые вычисления.
Примеры из мануала красноречиво показывают, на что она рассчитана:
1 2 3 4 5 6 7 |
echo strtotime("now"), "\n"; echo strtotime("10 September 2000"), "\n"; echo strtotime("+1 day"), "\n"; echo strtotime("+1 week"), "\n"; echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n"; echo strtotime("next Thursday"), "\n"; echo strtotime("last Monday"), "\n"; |
Если формат прочитать не удалось, то результат будет равен FALSE (в ранних версиях, до PHP 5.1, она в случае ошибки возвращала значение -1).
Чтение известного формата
Часто формат времени на входе — известен. Для таких случаев можно использовать другой подход.
Конструктор объекта DateTime::createFromFormat позволяет указать формат строки. Рассмотрим пример инициализации:
1 2 3 4 5 6 |
$dtm = DateTime::createFromFormat('Y-m-d H:i:s', $inputDate); if ($dtm) { echo $dtm->format('d.m.Y H:i'); } else { echo 'Формат даты не верен!'; } |
В примере дата ожидается в текстовом формате, типичном для баз данных.