Преобразование немецкой даты в Ymd не работает?

У меня такая дата: 2. Februar 2012

Я хочу, чтобы он был преобразован в 2012-02-02, поэтому я написал этот код:

$date = '2. Februar 2012'; $date = date('Ym-d', $date); 

Параметр $ date var либо пуст, либо 1970-01-01 впоследствии, что не так или нет?

Примечание . Дата находится в немецком формате, поэтому ее не февраль, а февраль. Я получаю дату от выбора даты таким образом.

Благодаря!

Solutions Collecting From Web of "Преобразование немецкой даты в Ymd не работает?"

Вы можете использовать * strtotime, а также должны передавать действительный формат даты в функции strtotime, поскольку ваша переменная $date не имеет допустимого формата.

У вас есть . и имя месяца с ошибкой. Вы должны очистить их, прежде чем перейти в strtotime . Для этого я использовал str_replace .

 $date = '2. Februar 2012'; $date = date('Ym-d', strtotime(str_replace('Februar','february',str_replace('.','', $date)))); 

используйте следующее:

 $date = '2. February 2012'; $date = strtotime($date); $date = date('Ym-d', $date); echo $date; 

Функция date() в php ожидает первого параметра как строки. Это нормально в вашем примере. Параметр Seconds необязателен, и ожидается, что он будет целочисленным с отметкой времени, которую вы хотите преобразовать.

Ссылка: http://php.net/manual/en/function.date.php

использовать strtotime

 putenv('LC_ALL=de_DE'); putenv('LANG=de'); setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'deu_deu'); $date = '2. Februar 2012'; $date = date('Ym-d', strtotime($date)); 

Используйте strtotime() .

 strtotime("2 February 2012") will return the unix timestamps. mktime(0, 0, 0, 2, 2, 2012) will return the same unix timestamps. 

Если вы можете запустить

 $ts = mktime(0, 0, 0, 2, 2, 2012); echo date("Ymd H:i:s", $ts); // output 2012-02-02 00:00:00 You can run the following too $ts = strtotime("2 February 2012"); echo date("Ymd H:i:s", $ts); // output 2012-02-02 00:00:00