Я работаю над небольшим приложением, которое импортирует несколько CSV-файлов с разных сайтов. Каждый сайт имеет свой формат для даты. Ниже приведены некоторые форматы.
'2013-12-04 11:32:21 +0000' '04/12/2014 +0000' '04/12/2014 +0000 11:32:21' 'Fri Mar 14 18:19:26 +0000 2014'
Мне нужно преобразовать вышеуказанные форматы в простой формат, например 'd-m'Y'
. Проблема здесь в том, что форматы не известны заранее, и я не могу идти и менять код каждый раз, когда новые файлы CSV должны быть добавлены в систему.
Есть ли способ, с помощью которого я могу преобразовать все эти форматы в простой формат? Я пробовал ниже, но это не работает, и я не могу найти другого решения.
$date = DateTime::createFromFormat(strtotime('2013-12-04 11:32:21 +0000'), '2013-12-04 11:32:21 +0000'); print_r($date->format('dm-Y')); //Doesn't work
Заранее спасибо за вашу помощь.
PHP понимает множество форматов даты. Здесь не требуется использовать DateTime::createFromFormat()
. Просто передайте строку даты в конструкцию DateTime
и отформатируйте ее на ходу:
Пример:
$array = [ '2013-12-04 11:32:21 +0000', '04/12/2014 +0000', '04/12/2014 +0000 11:32:21', 'Fri Mar 14 18:19:26 +0000 2014', ]; foreach ($array as $datestr) { $dt = new DateTime($datestr); echo $dt->format('Ym-d') . "\n"; }
Вывод:
2013-12-04 2014-04-12 2014-04-12 2014-03-14
демонстрация
пытаться
$date = new DateTime('2013-12-04 11:32:21 +0000'); echo $date->format('Ymd H:i:s'); //2013-12-04 11:32:21
Руководство для читателей: – http://www.php.net/manual/en/datetime.format.php
если вы хотите, чтобы все конвертировать, создайте массив значений и передайте в datetime ваши значения