2014-01-12 12 views
0

Я работаю с форматом даты, который может быть не стандартным, потому что strtotime не разбирает его правильно. Формат: Sun Nov 16 10:10:10 GMT 2010. Я пытаюсь преобразовать его в 2010-11-16, используя date('Y-m-d', strtotime($date), но не работает. Есть ли способ внести изменения в исходную строку даты так, чтобы она была близка к стандартному формату, поэтому strtotime согласился бы с этим?Преобразование этого формата даты

+3

[DateTime :: createFromFormat()] (http://www.php.net/manual/en/datetime.createfromformat.php) –

ответ

3

http://php.net/manual/en/function.strtotime.php

Функция ожидает, что будет дана строка, содержащая английский формат даты в и будет пытаться разобрать этот формат в метку времени Unix (в количество секунд, прошедших с 1 января 1970 00:00: 00 UTC) по отношению к временной отметке , указанной в настоящее время, или текущему времени, если теперь не предоставляется.

EDIT

Я полагаю, вы добьетесь того, что вы ищете с классом DATETIME
http://www.php.net/manual/en/class.datetime.php

EDIT 2

Как отметил @Mark Бейкер, наиболее правильная функция для использования - DateTime::createFromFormat, как вы можете видеть по этой ссылке:
http://www.php.net/manual/en/datetime.createfromformat.php

+1

'DateTime :: createFromFormat' путь вперед – qooplmao

+1

Спасибо за обоих ответы. Как оказалось, эта строка совместима с 'strtotime', но в моем коде была ошибка, которая разбила строку таким образом, чтобы она стала несовместимой. – sameold

0

strtotime()действительно знает как разобрать свой формат Sun Nov 16 10:10:10 GMT 2010 и разобран правильно. demo

Проблема с вашим примером является то, что дата 2010-11-16 не воскресенье, но это вторник, вот почему вы получите first Sunday from date 2010-11-16, который 2010-11-21. demo

DateTime::createFromFormatвернется же DateTime в strtotime(). demo

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