Название месяца к номеру месяца - 03 за февраль? - PullRequest
2 голосов
/ 30 января 2012

Я пытаюсь преобразовать строковое название месяца в номер месяца,

но почему я получаю '03' в результате для 'Feb' in,

strtolower(date('m', strtotime('Feb')));

Я проверил с другими названиями месяцев, и они, кажется, в порядке,

strtolower(date('m', strtotime('Jan'))); // 01
strtolower(date('m', strtotime('Mar'))); // 03

Что сделали не так?

Ответы [ 2 ]

2 голосов
/ 30 января 2012

Из руководства php.net :

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

В результате получается сочетание текущей даты (30 января) и "февраля" => 30 февраля - но это недопустимая дата, поэтому PHP возвращает номер месяца для марта.

Попытка что-то вроде

strtotime('01 Feb')

должен решить проблему.

2 голосов
/ 30 января 2012

Потому что сегодня январь 30 . Вы не предоставляете номер дня, поэтому php предполагает сегодняшний день, который заканчивается 30 февраля. То, что он тогда понимает, недопустимо, так что это продолжается до 2 марта, бедняжка.

...