Como faço para obter locais dia e mês?

Estou usando a seguinte function para recuperar data e hora:

function formatEventTime($time, $type, $locale = 'nb_NO') { setlocale(LC_TIME, $locale); switch($type) { case 'date' : $format = '%d.%m'; break; case 'dm' : $format = '%d. %B'; break; case 'time' : $format = '%H:%M'; break; case 'dmy' : $format = '%d.%m.%Y'; break; } return strftime($format, strtotime($time)); } 

wher $time = 2010-12-03 10:00:00 . O problema é que meus dias e meses ainda estão em inglês. Como eu mudo isso para, por exemplo, norueguês?

Atualizar
Isso funciona no meu servidor, mas não na minha máquina local.

Você precisa usar strftime() vez de data ().

Retorna uma string formatada de acordo com o formato usando o timestamp ou a hora local atual, se nenhum timestamp for fornecido. Os nomes do mês e dia da semana e outras cadeias dependentes do idioma respeitam a configuração local atual definida com setlocale ().

Use o IntlDateFormatter::format .

Exemplo:

 < ?php $df = new IntlDateFormatter('nb_NO', IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'Europe/Oslo'); echo $df->format(time()); 

dá:

 Torsdag 16. september 2010 kl.  21.23.03 Norge

Eu sei que este tópico é antigo, mas eu tive o mesmo problema hoje. As datas são exibidas corretamente na minha máquina linux, mas na minha máquina Windows ainda estão em inglês.

Se você quiser que isso funcione nas máquinas Linux e Windows, é necessário ter cuidado com a function setlocale (). No linux você precisa usar ‘nb_NO’ (por exemplo) para formatos noruegueses e no Windows, você deve usar ‘norueguês’:

 if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { setlocale(LC_ALL, 'norwegian'); } else { setlocale(LC_ALL, 'nb_NO'); } 

Você pode encontrar uma lista de códigos de idioma para Windows no MSDN .