Eerst moet u het datetime-object instantiëren met de originele tijdzone. Pas vervolgens, nadat het datetime-object is geïnstantieerd, de tijdzone aan met DateTime::setTimezone()
.
Zie deze code, waar ik Asia/Hong_Kong
heb gebruikt als voorbeeld GMT+8 tijdzone:
$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
Als alle originele datums altijd consequent zijn bedoeld als GMT+8, en uw PHP-toepassing is ingesteld om ook GMT+8 te gebruiken (ingesteld met date_default_timezone_set()
, bijvoorbeeld), is het niet nodig om de initiële DateTimeZone
. door te geven object, als nieuw aangemaakte DateTime
objecten worden automatisch gemaakt met die tijdzone.