2014-03-25 10 views
1

Привет, ребята у меня есть дата, как этотКак преобразовать формат даты в PHP

25 March 2014 - 16:45 

я хочу, чтобы преобразовать эту дату в этот формат, как сделать это, пожалуйста, помогите

2014-03-25 16:45:00 

я попробовать этот $creation = date('Y-m-d H:i:s',strtotime('25 March 2014 - 16:45')); , но это не работает

+1

Пожалуйста, проверьте STRFTIME и даты методов в PHP документации – mesutozer

+0

возможно дубликат [Преобразование одного формата даты в другой в PHP] (http://stackoverflow.com/questions/2167916/convert-one-date-format-into-another-in-php) –

+1

Также проверьте класс DateTime в документации PHP. – Spudley

ответ

3

Использование PHP DateTime

Вы "-" в "25 марта 2014 - 16:45" в строке, так что не может быть в состоянии читать DateTime

Так что работа вокруг будет

$str = "25 March 2014 -16:45"; 

$date = new DateTime(str_replace("-","",$str)); 
echo $date->format('Y-m-d H:i:s'); 
+0

, в котором находится версия PHP? Он нуждается (PHP 5> = 5.2.0) –

0

Попробуйте это:

$creation = date('Y-m-d H:i:s',strtotime('25 March 2014 16:45')); 
+0

, но из значения post наступают следующим образом 25 марта 2014 г. - 16:45 –

+0

Результат показан как 2014-03-25 16:45:00, тире в вызове функции strtotime была аннулирована дата, возвращая ее до 1969. Вы может отфильтровать строку, чтобы удалить тире, чтобы сделать ее совместимой. Чтобы упростить просмотр функции str_replace. –

4

я попробовать это $creation = date('Y-m-d H:i:s',strtotime('25 March 2014 - 16:45'));, но это не работает

The R eason ваш код не работает, потому что '25 March 2014 - 16:45' не в формате, который может обрабатывать strtotime().

strtottime() способен обрабатывать широкий диапазон форматов, но он не может справиться абсолютно с чем угодно; есть слишком много вариантов.

Я предлагаю вам вместо этого попробовать класс PHP DateTime. Этот класс имеет метод, называемый createFromFormat(), который позволяет указать формат входящей строки даты. Это облегчает его синтаксический анализ и позволяет использовать форматы, которые могут быть не распознаны иначе, как ваши.

Попробуйте это:

$date = DateTime::createFromFormat('j F Y - H:i', '25 March 2014 - 16:45'); 
echo $date->format('Y-m-d H:i:s'); 
2

Я успешно попытался следующие с вашей строки:

$a = strptime('25 March 2014 - 16:45', '%d %B %Y - %R'); 
$time = mktime(
    $a["tm_hour"], 
    $a["tm_min"], 
    $a["tm_sec"], 
    $a["tm_mon"]+1, 
    $a["tm_mday"], 
    $a["tm_year"]+1900 
); 
$converted = date('Y-m-d H:i:s',$time); 
+1

Обратите внимание, что strptime() не имеет отношения к Windows. В любом случае, вы можете использовать этот скрипт для любой другой ОС. – blue

Смежные вопросы