2012-02-28 3 views
2

У меня есть дата, как это: 2. Februar 2012Преобразование немецкой даты в Y-m-d не работает?

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

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

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

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

Спасибо!

+0

проверить эту ссылку http://stackoverflow.com/questions/9166656/php-convert-a-string-that-contains-a-date-in-this-format-2-february -2012-to-mkt – Ghostman

+0

читайте это: http://php.net/manual/en/datetime.formats.date.php – EscoMaji

ответ

0

использование strtotime

putenv('LC_ALL=de_DE'); 
putenv('LANG=de'); 
setlocale(LC_ALL, '[email protected]', 'de_DE', 'deu_deu'); 

$date = '2. Februar 2012'; 
$date = date('Y-m-d', strtotime($date)); 
+0

Нет, все еще получаю 1970-01-01 ... – EOB

3

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

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

$date = '2. Februar 2012'; 
$date = date('Y-m-d', strtotime(str_replace('Februar','february',str_replace('.','', $date)))); 
+1

Нет, его не ошибочно, его Немецкий ... и на немецком языке Februar. Дата идет от календарного контроля таким образом. – EOB

+0

@EOB: Это не допустимый формат даты, который принимает strtotime. Вы должны изменить его на «февраль» или действительный формат даты. Вы можете увидеть здесь http://www.php.net/manual/en/datetime.formats.date.php –

+0

Да, это может быть, но как насчет местных дат? Должно быть решение? – EOB

0

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("Y-m-d H:i:s", $ts); // output 2012-02-02 00:00:00 

You can run the following too 

$ts = strtotime("2 February 2012"); 
echo date("Y-m-d H:i:s", $ts); // output 2012-02-02 00:00:00 
2

использовать так:

$date = '2. February 2012'; 
$date = strtotime($date); 
$date = date('Y-m-d', $date); 

echo $date; 
+0

Это работает, но это не FebruarY в моем случае, его Februar. – EOB

+0

@EOB О, извините, я думал, что это орфографическая ошибка. Какой язык был? – Arfeen

+1

Его немецкая дата ... – EOB

0

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

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