Вывод функции PHP Date на итальянском языке
Я пытаюсь вывести даты в итальянском формате с помощью date()
следующим образом:
<?php
setlocale(LC_ALL, 'it_IT');
echo date("D d M Y", $row['eventtime']);
?>
Однако он все еще выходит в английском формате. Что еще я мог сделать? Здесь что-то не так?
Решение должно быть script конкретным, а не сервером...
Спасибо
Шади
Ответы
Ответ 1
date()
не является локальным. Вы должны использовать strftime()
и его спецификаторы формата для вывода языковых дат (из date()
Руководство по PHP):
Чтобы форматировать даты на других языках, вы должны использовать setlocale()
и strftime()
вместо date()
.
Что касается комментария Anti Veeranna, он абсолютно прав, поскольку вы должны быть очень осторожны с настройкой локалей, поскольку они иногда не ограничиваются текущей областью script, Лучший способ:
$oldLocale = setlocale(LC_TIME, 'it_IT');
echo utf8_encode( strftime("%a %d %b %Y", $row['eventtime']) );
setlocale(LC_TIME, $oldLocale);
Ответ 2
it_IT locale должен быть установлен/активирован администратором сервера, иначе это не сработает.
Итак, решение Джонатана, вероятно, самое лучшее.
Ответ 3
http://www.phpnews.it/articoli/ottenere-date-in-italiano/
Ответ 4
Я обнаружил, что 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
Ответ 5
О статье 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('d-m-Y', $date));
return $day . ' ' . $months[$month] . ' ' . $year;
}