Le tue pagine PHP non mostrano l’orario corretto? Probabilmente ciò accade perché il provider, presso il quale hai acquistato il tuo hosting, ha impostato un fuso orario differente rispetto a quello italiano.
Il problema del fuso orario
Può capitare che l’orario del server, su cui si trovano le nostre pagine web, non sia corretto, ad esempio perchè il nostro hosting provider si trova all’estero e, pertanto, il server utilizza un fuso orario differente. Facciamo un esempio supponendo che il provider abbia i suoi server a New York dove il fuso orario comporta una differenza di 6 ore rispetto all’Italia (in pratica, quando da noi sono le 16:00, nella Grande Mela sono le 10:00). Ciò comporta un problema pratico di non poco conto per lo sviluppaore in quanto l’utilizzo dell’orologio di sistema produrrà risultati non adeguati alle aspettative: se si registra un evento, ad esempio, la data e l’orario che verranno memorizzati non saranno quelli italiani ma quelli di New York creando una certa confusione a livello applicativo!
Questo problema, tuttavia, si può risolvere facilmente cambiando alcune impostazioni di PHP.
Modificare php.ini
Se hai la possibilità di accedere al file php.ini (ad esempio perché hai acquistato una VPS) puoi risolvere facilmente il problema cambiando il valore di date.timezone in questo modo:
date.timezone = " Europe/Rome"
Il codice di esempio imposta il fuso orario italiano. La lista completa dei fusi orari supportati è disponibile a questa pagina del sito ufficiale di PHP.
Modificare il timezone mediante .htaccess
Se non si ha accesso al file di configurazione di PHP si può provare ad effettuare questa modifica mediante .htaccess in questo modo:
php_value date.timezone " Europe/Rome"
Modificare il fuso orario all’interno del codice PHP
Come risolvere questo problema di discrepanza tra l’orario impostato sul server e quello italiano se non si ha la possibilità di editare il file php.ini ne tantomeno utilizzare .htaccess? IN questo caso, non avendo modo di riconfigurare l’orario del server, dovremo attuare una strategia differente.
Il modo corretto per risolvere questa problematica è utilizzare la direttiva date_default_timezone_set(). Nel nostro caso, per impostare la corretta timezone dovremo aggiungere in cima ai nostri script PHP la seguente direttiva:
date_default_timezone_set('Europe/Rome');
Automaticamente il web server effettuerà gli opportuni calcoli per adeguare l’orario corrente al fuso italiano.
In alternativa all’utilizzo di questa direttiva è anche possibile fare ricorso ad un piccolo espediente per "aggiustare la data" del server. Ritoranando all’esempio di New York potremo utilizzare queste due righe di codice per avere una data in italiano corretta:
$oggi = date('d-m-Y H:i');
$oggi = strftime("%d-%m-%Y %H-%i", strtotime("$oggi + 6 hour"));
Naturalmente potrete convertire il valore di "$oggi" nel formato più adatto alle vostre esigenze facendo ricorso alle funzioni per la gestione di date ed orari di PHP.