Først skal du instansiere datetime-objektet med den oprindelige tidszone. Efter at datetime-objektet er instantieret, skal du justere tidszonen med DateTime::setTimezone()
.
Se denne kode, hvor jeg har brugt Asia/Hong_Kong
som et eksempel GMT+8 tidszone:
$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
Hvis alle de originale datoer altid er konsekvent ment som GMT+8, og din PHP-applikation også er indstillet til at bruge GMT+8 (indstillet med date_default_timezone_set()
, for eksempel), er der ingen grund til at videregive den indledende DateTimeZone
objekt, som nyoprettet DateTime
objekter vil automatisk blive oprettet med den tidszone.