Intereting Posts
jquery / ajax form – serverside php, но получить предупреждение о перекрестном домене Почему моя кнопка Facebook Connect приводит меня к неправильному URL? PHPDoc для массивов аргументов переменной длины Почему этот php apache_request_headers не работает на IIS 7 Невозможно разобрать RSS XML с PHP php url-запрос вложенного массива без индекса Общие сведения о обратных вызовах сортировки или сравнения функций массива с использованием пользовательских функций Wamp Server: несколько виртуальных хостов не работают в Windows Поиск строки или части строки в PHP Как добавить форму в другой форме с помощью AJAX? Но помните, что первая форма также добавлена ​​с AJAX Symfony2: использование Facebook PHP Api, класс BaseFacebook не может быть загружен Проблема перенаправления PHP-страницы – Невозможно изменить информацию заголовка CakePHP – Заказ в $ hasMany модели игнорируется Назначить несколько ключей одному значению в массиве Загрузите новую страницу напрямую, если пользователь уже зарегистрировался в facebook

Создать дату / время, когда формат неизвестен

Я работаю над небольшим приложением, которое импортирует несколько 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 ваши значения