Код:
$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
strtotime() не поддерживает порядок вашей даты (см. 2 nd таблица ). Вместо этого используйте класс DateTime:
strtotime()
DateTime
$date = DateTime::createFromFormat("jS M, Y", "24th Dec, 2012"); var_dump($date->format('Y-m-d')); // string(10) "2012-12-24"
Входные данные для функции strtotime должны быть в формате , который strtotime может понимать .
Возможно, это как-то связано с форматом $ expiration_date. Попробуйте поставить месяц перед датой. Это сработало просто отлично для меня.
$expiration_date = "Dec 24th, 2012";