Неверный месяц (февраль) – DateTime :: createFromFormat

Преобразование даты из строки возвращает неверные значения для второго месяца (февраль):

$dtformat = 'Ym-01'; $curDate = DateTime::createFromFormat('Y-m', '1996-02'); print_r($curDate); $dt = $curDate->format($dtformat); echo $dt."\n"; 

Вместо «1996-02-01» он возвращает «1996-03-01». Это массив $currDate :

 DateTime Object ( [date] => 1996-03-02 01:19:01 [timezone_type] => 3 [timezone] => America/New_York ) 

Все остальные месяцы работают нормально. Что мне здесь не хватает?

Благодаря!

Solutions Collecting From Web of "Неверный месяц (февраль) – DateTime :: createFromFormat"

Это ошибка в соответствии с этим сообщением .

Причина. Когда мы не createFromFormat дату для createFromFormat по createFromFormat она будет createFromFormat сегодняшней. Так что в этом случае это будет 1996-02-31 которого не существует, и, следовательно, это займет следующий месяц.

Решение. Необходимо обеспечить день, чтобы избежать такого сценария.

 $date = "2011-02"; echo $date."\n"; $d = DateTime::createFromFormat("Ymd",$date."-01"); echo $d->format("Ym"); 

Попробуйте с помощью этого кода:

 $curDate = DateTime::createFromFormat('Y-!m'), '1996-02');