Изменение языка для даты в php

У меня есть этот MySQL-запрос, который возвращает две даты (которые оба отформатированы как amY). Теперь я хочу перевести эту дату на свой родной язык (датский). Как мне это сделать. Я попытался использовать функции setlocale () и strftime (), но это не сработает. Я знаю, что это очень простой вопрос, но мне очень нужна помощь 🙂 Большое спасибо!

Используйте setlocale и strftime вместе:

 setlocale(LC_TIME, array('da_DA.UTF-8','da_DA@euro','da_DA','danish')); echo strftime("%A"); // outputs 'tirsdag' 

Работает на моей php-установке в Windows.

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

http://php.net/manual/en/function.strftime.php

 <?php setlocale(LC_ALL, 'da_DA'); echo strftime("%A %e %B %Y"); ?> 

Я не думаю, что функция date() достаточно развита для вас, здесь.

Вместо этого я бы рекомендовал вам взглянуть на класс IntlDateFormatter 1 (цитирование) :

Date Formatter – это конкретный класс, который позволяет зависящее от языка форматирование / синтаксический анализ дат с использованием строк шаблонов и / или законченных шаблонов.

Есть несколько примеров на странице руководства IntlDateFormatter::format() , где этот метод используется для отображения даты на двух разных языках, просто установив желаемый язык.

1. в комплекте с PHP> = 5.3

Я обнаружил, что setlocale не является надежным, поскольку он установлен для каждого процесса, а не для потока (в руководстве упоминается об этом). Это означает, что другие исполняемые скрипты могут изменить языковой стандарт в любое время. Решение использует IntlDateFormatter из расширения intl php.

  • Установите intl if neceparry (ubuntu): sudo apt-get install php5-intl

  • Установите язык, который вы хотите использовать (например, я использую итальянский язык): sudo locale-gen it_IT

  • Создайте локально форматированную дату:

 $fmt = new \IntlDateFormatter('it_IT', NULL, NULL); $fmt->setPattern('d MMMM yyyy HH:mm'); // See: http://userguide.icu-project.org/formatparse/datetime for pattern syntax echo $fmt->format(new \DateTime()); // Output: 6 gennaio 2016 12:10 

Если вы пытаетесь преобразовать datetime попробуйте это:

 $fecha = $dateConsulta->format('dM-Y'); $fecha = str_replace('Jan','Ene',$fecha); $fecha = str_replace('Apr','Abr',$fecha); $fecha = str_replace('Aug','Ago',$fecha); $fecha = str_replace('Dec','Dic',$fecha);