Durante la fase di sviluppo di un sito web e relativa messa online ho avuto un problema nella gestione delle date.

Ogni operazione che facevo con le date mostrava un orario diverso da quello che mi sarei aspettato dal risultato. Il problema era dovuto alla localizzazione del server Mysql che ospitava il mio sito web.

Il server Mysql era localizzato in America e possedeva un fuso orario di 8 ore indietro (America/Arizona) rispetto a quello italiano.

Per risolvere questo problema ho dovuto inserire, appena dopo la stringa di connessione al db, due istruzioni per cambiare il timezone utilizzato da Mysql e quello utilizzato dalle funzioni PHP.

<?php
 $conn=mysql_connect($db["host"],$db["user"],$db["pass"]);
 mysql_select_db($db["name"], $conn);
 //CAMBIO IL TIMEZONE DI MYSQL
 mysql_query("set time_zone = 'Europe/Rome'");
 //CAMBIO IL TIMEZONE DELLE FUNZIONI PHP
date_default_timezone_set('Europe/Rome');
 ?>

Grazie a queste istruzioni sono riuscito a cambiare il timezone sia del server Mysql che delle funzioni PHP da quello americano a quello Italiano.

Se avete siti web su hosting straniero come Godaddy allora questo potrebbe essere la soluziona a tutti i vostri problemi.

Ecco una lista di Timezone supportati

Info aggiuntive su date_default_timezone_set