Вывод функции PHP Date на итальянском языке

Я пытаюсь вывести даты в итальянском формате с использованием date() следующим образом:

 <?php setlocale(LC_ALL, 'it_IT'); echo date("D d MY", $row['eventtime']); ?> 

Однако он все еще выходит в английском формате. Что еще я мог сделать? Здесь что-то не так?

Решение должно быть специфичным для сценариев, а не для сервера …

благодаря

Шади

date() не является локальным. Вы должны использовать strftime() и его спецификаторы формата для вывода дат, соответствующих языковым стандартам (начиная с date() руководства PHP):

Чтобы форматировать даты на других языках, вы должны использовать функции setlocale() и strftime() вместо date() .

Что касается комментария Анти Виэранны : он абсолютно прав, поскольку вы должны быть очень осторожны с настройкой локалей, поскольку они иногда не ограничиваются текущей областью сценариев. Лучший способ:

 $oldLocale = setlocale(LC_TIME, 'it_IT'); echo utf8_encode( strftime("%a %d %b %Y", $row['eventtime']) ); setlocale(LC_TIME, $oldLocale); 

it_IT locale должен быть установлен / активирован администратором сервера, иначе это не сработает.

Итак, решение Джонатана, вероятно, самое лучшее.

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

 $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()); 

Если это не сработает, вам может потребоваться:

  • Установите расширение intl php (пример ubuntu): sudo apt-get install php5-intl

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

О статье на http://www.phpnews.it/articoli/ottenere-date-in-italiano/response , блог предлагает альтернативный метод, но код не работает, вот правильный код:

 function timestamp_to_date_italian($date) { $months = array( '01' => 'Gennaio', '02' => 'Febbraio', '03' => 'Marzo', '04' => 'Aprile', '05' => 'Maggio', '06' => 'Giugno', '07' => 'Luglio', '08' => 'Agosto', '09' => 'Settembre', '10' => 'Ottobre', '11' => 'Novembre', '12' => 'Dicembre'); list($day, $month, $year) = explode('-',date('dm-Y', $date)); return $day . ' ' . $months[$month] . ' ' . $year; } в function timestamp_to_date_italian($date) { $months = array( '01' => 'Gennaio', '02' => 'Febbraio', '03' => 'Marzo', '04' => 'Aprile', '05' => 'Maggio', '06' => 'Giugno', '07' => 'Luglio', '08' => 'Agosto', '09' => 'Settembre', '10' => 'Ottobre', '11' => 'Novembre', '12' => 'Dicembre'); list($day, $month, $year) = explode('-',date('dm-Y', $date)); return $day . ' ' . $months[$month] . ' ' . $year; }