strtotime с годом в двухзначном формате

Hallo может кто-то объяснить поведение функции strtotime с годом в нестандартном формате.

echo date("dmY",strtotime('02-12-10')) .'<br>'; //10-12-2002 echo date("dmY",strtotime('09.09.10')) .'<br>'; //02-09-2010 --How this is interpreted? echo date("dmY",strtotime('02-12-2010')) .'<br>'; //02-02-2010 echo date("dmY",strtotime('09.09.2010')) .'<br>'; //09-09-2010 

Я хотел преобразовать строки формата dd.mm.yy (09.09.10) в формат datetime.

strtotime() может быть немного шелушащимся в таких случаях. Он построен для распознавания стандартных форматов дат.

Если вы можете использовать PHP> 5.3, рассмотрите возможность использования DateCreateFromFormat, который имеет большое преимущество принятия заданной строки форматирования для анализа входящих данных.

На платформах pre-5.3 strptime() похоже, предлагает вторую альтернативу. Он недоступен в Windows и имеет некоторые незначительные проблемы – обязательно прочитайте страницу руководства перед использованием.

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

Формат «Дневной, месячный и двухзначный год с точками или вкладками» (dd [. \ T] мм ». Yy) работает только для значений года 61 (включительно) до 99 (включительно) – вне этих лет время формат "HH [.:] MM [.:] SS" имеет приоритет.

Вы используете '09.09.10' и 10 не попадают в допустимый диапазон, поэтому меняйте разделитель на -

Это не двузначный год. это вопрос нестандартного формата.
И просить невозможные вещи из простой программы.
Даже я, не будучи компьютером, понятия не имею, что означают эти носки 09 в вашей дате. это day.month.year ? или year.month.day или что-то еще?
Предполагая, что это day.month.year :

 $list($d,$m,$y) = explode("09.09.10"); echo "$d-$m-20$y";