[PILLOLE PHP] Come ottenere le date in italiano?

Quello che tratteremo in questo articolo è un problema piuttosto comune spesso sollevato dai principianti. Sebbene la sua soluzione sia piuttosto semplice dovremo comunque prestare attenzione ad alcuni aspetti.

La localizzazione delle date

Per ottenere da PHP le date in italiano dovremo innanzitutto fare uso della funzione setlocale() che imposta i parametri relativi ad una determinata lingua o area geografica e prende due argomenti:

  • Il tipo di localizzazione. Nel nostro caso siamo interessati alle date, dunque passeremo la costante LC_TIME
  • La stringa della lingua che intendiamo utilizzare, nel nostro caso it_IT.

Ma, come ormai dovresti sapere… c’è sempre un ma.
Nella precedente pillola PHP avevo anticipato che a volte succede che vi siano delle differenze a dipendenza del sistema operativo (diciamo pure che è sempre Windows a creare delle differenze). Ora, se il sistema operativo del server è Windows, la stringa che dovremo passare alla funzione setlocale() sarà ita_ITA e non it_IT.
Quindi prima di invocare la funzione setlocale() dovremo rilevare il sistema operativo ad esempio con la funzione proposta nel precedente articolo, oppure con una ulteriore semplificazione:

function isWin()
{
    $sys = strtoupper(PHP_OS);

    if(substr($sys,0,3) == "WIN")
    {
        return TRUE;
    }
    return FALSE;
}

$localString = "it_IT";

if(isWin())
{
    $localString = "ita_ITA";
}

setlocale(LC_TIME, $localString);

Come vedi ho creato la funzione isWin() che semplicemente ritorna TRUE se il sistema è Windows oppure FALSE se non lo è.
In seguito valorizzo la variabile $localString con “it_IT” per poi verificare se il sistema operativo è Windows, in quel caso passo il valore corretto alla variabile e solo a quel punto invoco la funzione setlocale().

Che funzioni utilizzare?

setlocale() fa capo alla funzione strftime() la quale, in base ai parametri passati, restituisce la data nel formato che desideriamo visualizzare.
Prende due argomenti:

  • Il formato; così come descritto nella tabella della documentazione
  • Opzionalmente il timestamp (se non viene passato nulla ritornerà la data e l’ora attuale)

Ora, se volessimo stampare la data attuale nel formato giorno_della_settimana – numero_del_giorno_del_mese – nome_del_mese possiamo procedere in questo modo (dopo aver localizzato le date):

echo strftime("%A %d %B");

Ed ecco che la stringa sarà correttamente formattata in italiano.

E la codifica?

Se non sei proprio afferrato nella codifica dei caratteri, è possibile che i nomi dei primi 5 giorni della settimana ti diano dei problemi. Per non complicare troppo le cose, visto che si tratta solo di una “ì”, risolviamo molto semplicemente così:

$data = strftime("%A %d %B");
echo str_replace('ì', 'ì', $data);

Conclusione

In questo articolo abbiamo visto come, grazie ad alcuni piccoli passaggi, possiamo visualizzare le date in italiano con PHP. Abbiamo inoltre visto un’applicazione pratica del rilevamento del sistema operativo.
Con questo articolo ricevi in regalo anche una piccola classe nella quale ho impacchettato tutto quello che abbiamo visto. Spero che ti torni utile.

Download
Tag: ,

L'autore

Maurizio è sposato con la triade PHP - MySql - Apache e, non pago, ha un'amante chiamata jQuery. Ha un blog dove cerca di descrivere nei minimi particolari sia la moglie che l'amante. La sua vera specialità è la realizzazione di gestionali complessi anche se non rifiuta mai un sito web. +

Sito web dell'autore | Altri articoli scritti da

Articoli correlati

Potresti essere interessato anche ai seguenti articoli:

19 commenti

Trackback e pingback

  1. Tweets that mention [PILLOLE PHP] Come ottenere le date in italiano? | Your Inspiration Web -- Topsy.com
    [...] This post was mentioned on Twitter by Gianni Leggio, PHP Italia and Antonino Scarfì, mtx_maurizio. mtx_maurizio said: RT @YIW…