Innanzitutto, è necessario creare un'istanza dell'oggetto datetime con il fuso orario originale. Quindi, dopo aver creato un'istanza dell'oggetto datetime, regola il fuso orario con DateTime::setTimezone()
.
Vedi questo codice, dove ho usato Asia/Hong_Kong
ad esempio fuso orario GMT+8:
$time = "2012-11-07 15:05:26"; // fetch from database
$date = new DateTime($time,new DateTimeZone('Asia/Hong_Kong'));
$date->setTimezone(new DateTimeZone('Europe/Berlin'));
echo $date->format('Y-m-d H:i:s'); // yields 2012-11-07 08:05:26
Se tutte le date originali sono sempre intese in modo coerente come GMT+8 e la tua applicazione PHP è impostata per utilizzare anche GMT+8 (impostato con date_default_timezone_set()
, ad esempio), non è necessario passare il DateTimeZone
iniziale oggetto, come DateTime
appena creato gli oggetti verranno creati automaticamente con quel fuso orario.