Usare la funzione date() per manipolare le date con il formato convenzionale è più che sufficente. Quando si tratta, però, di gestire le date in un’altro linguaggio che non sia l’inglese (l’italiano per esempio), comincia a essere non del tutto funzionale.

Quando si vuole rappresentare una data in formato locate, PHP ci offre la funzione strftime(). Ma questo da solo non basta perché appunto ci serve che vengano caricate le informazioni della localizzazione al motore e si ottiene con la funzione setlocale() che acceta due parametri: la categoria dell’informazione (espressa con una costante riservata) e il linguaggio da adoperare per le informazioni.
Per il set di costanti e il set di lingue rimando alla pagina del manuale di PHP della funzione setlocale(). I segnaposto da usare nella funzione strftime() non sono uguali a quelli usati per la formattazione della stringa con date()
Vediamo un esempio. Configuriamo prima l’ambiente con la funzione setlocale()
<?php

setlocale(LC_TIME, 'ita', 'it_IT.utf8');

?>
Siccome per questo esempio ci serve solo modificare le informazioni relative alla data useremo la costante LC_TIME; se ci serve per tutto l’ambiente, come la divisa, la numerazione, messaggi di ritorno, ecc. useremo LC_ALL, anche se per ogni casistica esiste la sua costante specifica.
Il secondo parametro sarebbe una lista di possibili locale per il sistema operativo in uso. In questo caso ita si usa per i servers Windows, mentre un seguente parametro, 'it_IT.utf8' si usa per per i servers della famiglia *nix.
Configurata la lingua possiamo chiamiare la funzione strftime()
<?php

$mia_data = strftime("%A, %d %B %Y");

?>
Con la %A si ottiene il nome del giorno della settimana, la %d ritorna il giorno del mese nel formato gg, la %B ritorna il nome del mese e la %Y l’anno nel formato yyyy. Nella pagina del manuale ci sono tutti i segnaposto disponibili per formattare la data secondo le nostre essigenze.
Un ultimo appunto per quanto riguarda l’output della stringa. Si riferisce alla visualizzazione dei caratteri non standard, come le vocali accentate. Visto che la non funzione echo si occupa di visualizzare e non di trattare l’output, la stringa si dovrebbe filtrare con la funzione utf8_encode(), e così ci si assicura la sua corretta visualizzazione.
<?php

echo utf8_encode($mia_data);
# Visualizza: mercoledì, 19 aprile 2012

?>
La precedete soluzione (tre righe di codice) ci evita di creare array, liste e utilizzare degli indici se si usa la funzione date() come nell’esempio seguente.
<?php

$mesi = array('', 'gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio',  'agosto', 'settembre', 'ottobre', 'novembre','dicembre');
$giorni = array('domenica','lunedì','marted', 'mercoledì', 'giovedì', 'venerdì','sabato');
list($sett,$giorno,$mese,$anno) = explode('-',date('w-d-n-Y'));

echo $giorni[$sett],' ',$giorno,' ',$mesi[$mese],' ',$anno;

?>
Note
LC_NUMERIC e LC_ALL ci permette di convertire il separatore decimale ogni volta che lo si usa in una stringa, anche se la stringa è una query. Questo è un problema per ogni locale che utilizza la virgola come separatore decimale. Suggeriscono di essere sicuro che LC_NUMERIC sia impostato su un locale standard e utilizzare le funzioni di formattazione per visualizzare i numeri formattati solo quando è necessario.
<?php

setlocale(LC_ALL, 'ita', 'it_IT.utf8');
// sovrascrive il separatore  decimale
setlocale(LC_NUMERIC, 'en_US'); 

?>

Similari
L’elemento time HTML5 è tornato e migliore che mai
13% Html5
L’elemento time HTML5 era al punto di sparire l’anno scorso. L’editore Ian Hickson l’aveva eliminato dalle specifiche HTML5, ma poi il W3C, il gruppo che sovrintende HTML5, è intervenuta per soprassedere alla decisione di …
Correggere gli errori di ereg in PHP 5.3
8% Php
Se avete fatto l’aggiornamento a PHP 5.3, ci sono alte probabilità che ci saranno alcuni avvisi o messaggi di funzioni deprecate, in alcuni casi ferma totalmente lo script. Un esempio è la famiglia di funzioni ereg, che so…
Iteratori in PHP
7% Php
Iterator è uno dei più noti modelli di progettazione grazie al suo utilizzo in diversi linguaggi di programmazione come Python, Java, C++ e PHP. Fondamentalmente ciò che questo modello propone è di trasferire la responsabi…
Funzioni popolari per gestire le stringhe
6% Php
PHP ha una vasta scelta di funzioni integrate per la gestione delle stringhe che permettono di manipolarle facilmente in quasi ogni modo possibile. Tuttavia, imparare tutte queste funzioni, ricordando quello che fanno e qu…
Frammenti utili in PHP
6% Php
Se i frammenti di tipo PHP abbondano su Internet, allora perché scriverne un altro? Beh, i frammenti PHP trovati al giro sono generalmente zoppi. Frammenti che generano una stringa casuale o un ritorno di $_SERVER[“REMOTE_…