Изменение формата даты - неверный год - PullRequest
0 голосов
/ 25 декабря 2011

Код:

$expiration_date = "24th Dec, 2012";
var_dump( date( 'Y-m-d', strtotime( $expiration_date )));;

Вывод:

string(10) "2011-12-24"

Почему PHP неправильно анализирует год (показывает 2011вместо 2012)?

Версия PHP: 5.2.17 в Centos 5.7

Ответы [ 3 ]

4 голосов
/ 25 декабря 2011

strtotime() не поддерживает порядок вашей даты (см. 2 nd таблица ). Вместо этого используйте класс DateTime:

$date = DateTime::createFromFormat("jS M, Y", "24th Dec, 2012");
var_dump($date->format('Y-m-d')); // string(10) "2012-12-24"
1 голос
/ 25 декабря 2011

Входные данные для функции strtotime должны быть в формате , который strtotime может понимать .

1 голос
/ 25 декабря 2011

Возможно, это как-то связано с форматом $ expiration_date. Попробуйте поставить месяц перед датой. Это сработало просто отлично для меня.

$expiration_date = "Dec 24th, 2012";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...