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";