web-dev-qa-db-fra.com

Comment convertir une date/heure UTC dans un autre fuseau horaire?

Comment puis-je convertir une date comme celle-ci: 2012-07-16 01:00:00 +00 (elle est dans le fuseau horaire UTC +00:00) en fuseau horaire UTC +04:00? S'assurer que l'heure d'été sera manipulée correctement?

23
Jo Smo

Utilisez DateTime et DateTimeZone .

$date = new DateTime('2012-07-16 01:00:00 +00');
$date->setTimezone(new DateTimeZone('Europe/Moscow')); // +04

echo $date->format('Y-m-d H:i:s'); // 2012-07-15 05:00:00 
40
Florent

Pour vous aider avec la solution, vous devez obtenir la dernière partie de la chaîne (la partie offset) et la comparer à une simple recherche. vous pouvez utiliser un regex ou substr() (peut-être) pour obtenir la partie la plus distante. Ensuite, lorsque vous avez une valeur + ou -, utilisez un maximum de 24 recherches sur des fuseaux horaires possibles, que vous pouvez utiliser avec les/possibles fuseaux horaires - de PHP - si le décalage est le même, qui se soucie du pays/de la localisation réelle?

Utilisez date_default_timezone_set pour appliquer le bon.

0
Fluffeh