Привет, у меня есть формат даты, подобный этому
(в английском формате)
15. July 2011
И я хочу преобразовать его в немецкий формат, как это
15. Juli 2011
Как преобразовать формат даты из одного языка в другой формат?
Мой код
$date = '15. July 2011'; $newLocale = setlocale(LC_TIME, 'de_DE'); $date = strftime('%d. %B %Y',$date);
Но это не преобразование. Я получаю July
а не Juli
Вы можете использовать функцию setlocale
перед вызовом функции date
:
$newLocale = setlocale(LC_TIME, 'de_DE', 'de_DE.UTF-8');
EDIT: Цитата из strftime
docs:
Этот пример будет работать, если в вашей системе установлены соответствующие локали.
Если у вас установлено расширение интернационализации , вы можете использовать класс IntlDateFormatter .
Он действительно достаточно мощный и фактически отображает дату и время в правильном формате для локали, на которую вы нацеливаетесь.
Например, для Германии может быть:
// create format $fmt = datefmt_create("de_DE", IntlDateFormatter::FULL, IntlDateFormatter::NONE, 'Europe/Berlin', IntlDateFormatter::GREGORIAN); // output (using current time) echo datefmt_format($fmt , time());
Какие результаты:
Dienstag, 29. ноября 2011 г.