Tout d'abord, vous devez instancier l'objet datetime avec le fuseau horaire d'origine. Ensuite, une fois l'objet datetime instancié, ajustez le fuseau horaire avec DateTime::setTimezone()
.
Voir ce code, où j'ai utilisé Asia/Hong_Kong
par exemple fuseau horaire 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
Si toutes les dates d'origine sont toujours signifiées GMT+8 et que votre application PHP est configurée pour utiliser GMT+8 également (définie avec date_default_timezone_set()
, par exemple), il n'est pas nécessaire de passer le DateTimeZone
initial objet, en tant que DateTime
nouvellement créé les objets seront automatiquement créés avec ce fuseau horaire.