2012-12-12 7 views

risposta

20

Si dovrebbe usare setlocale():

setlocale(LC_TIME, 'fr_FR'); 
$month_name = date('F', mktime(0, 0, 0, $i)); 

In questo caso sarebbe impostarlo a Francese. Per il vostro caso dovrebbe essere uno dei seguenti:

  1. sr_BA - Serbia (Montenegro)
  2. sr_CS - Serbia (Serbia)
  3. sr_ME - Serbia (Serbia e Montenegro)
+0

Grazie per il vostro aiuto :) – Sasha

+7

Il mio 'date' è locale inconsapevole, il mio' strftime' non lo è. Se il tuo è locale consapevole ... qual è la tua versione di PHP? – Wrikken

+2

Ma si noti che ['setlocale' imposta il processo locale largo] (http://php.net/manual/en/function.setlocale.php#refsect1-function.setlocale-notes) (causando un comportamento imprevisto con più thread durante l'utilizzo multi-threading). Thread alternativa sicura: [IntlDateFormatter] (http://php.net/manual/en/class.intldateformatter.php) – Matmarbon

11

È dovrebbe utilizzare setlocale() e strftime():

setlocale(LC_TIME, 'sr_CS'); 
$month_name = strftime('%B', mktime(0, 0, 0, $i)); 
+0

ha problemi con il fuso orario sull'oggetto datetime se si utilizza setTimezone() e si usa getTimestamp() – Thanatos11th

+0

questo lavoro per me, purtroppo sulla mia macchina 'setLocale()' non influenza 'date()' –

1

Ecco un esempio con IntlDateFormatter

$format = new IntlDateFormatter('sr_CS', IntlDateFormatter::NONE, 
       IntlDateFormatter::NONE, NULL, NULL, "MMM"); 
$monthName = datefmt_format($format, mktime(0, 0, 0, $i)); 
1

E 'buona idea per passare il codifica quando l'impostazione della localizzazione:

<?php  
date_default_timezone_set('Europe/Belgrade'); 
setlocale(LC_TIME, array('sr_CS.UTF-8', 'sr.UTF-8')); 
Problemi correlati