La funzione date() è sicuramente un ottimo strumento per rappresentare le date nel formato gg/mm/aaaa et similia, ma diventa deltutto insufficiente quando si ha a che fare con le date in italiano.
A tal proposito, torna certamente utile la funzione strftime() che abbinata alla funzione setlocale() ci consente di ottenere la visualizzazione della data nella lingua che preferiamo.
Ma facciamo un esempio pratico. Per prima cosa richiamiamo la funzione setlocale() nel modo seguente:
setlocale(LC_TIME, 'ita', 'it_IT.utf8');
Il secondo parametro, ovvero ita è essenziale per il i server Windows, mentre il terzo parametro, ovvero ‘it_IT.utf8’ è indispensabile per i server *nix.
Richiamiamo adesso la funzione
$data = strftime("%A, %d %B %Y");
Dove %A è il nome del giorno della settimana, %d è il giorno del mese in notazione gg, %B è il nome del mese e %Y è l’anno nel formato yyyy.
Ora, poichè la funzione echo di per sè non visualizza correttamente i caratteri accentati (per i giorni Lunedì, Martedì, ecc.) è necessario utilizzare la funzione utf8_decode(). Avremo quindi:
echo utf8_encode($data)
Un esempio di output così ottenuto è il seguente:
martedì, 14 giugno 2011
Alla prossima.
NB: per ottenere una lista delle localizzazioni attive sulla nostra linux box basta lanciare il comando:
nightfly@nightbox:~$ locale -a
Ottimo articolo. Volevo sapere se era possibile avere la prima lettera del giorno maiuscola. Grazie
Ciao Piero,
grazie per i complimenti.
Prova così:
echo utf8_encode(ucfirst($data));
Funziona alla grandissima. Grazie.
Quindi basta aggiungere ucfirst.
Perfetto. Grazie ancora, Piero
Ciao, mi è sorta un’altra esigenza.
Come potrei separare su due righe la data ?
Come ad esempio così:
Domenica
04 novembre 2012
Grazie per la pazienza e la disponibilità.
$giorno = strftime(ucfirst(“%A”));
$data = strftime(“%d %B %Y”);
echo “$giorno”;
echo “$data”;
Ciao
Grazie mille, sempre preciso e perfetto.
Saluti Piero
Grazie mille, sempre preciso e perfetto.
Saluti Piero