Comment puis-je convertir facilement des dates de l'heure UTC via PHP?

Je suis l'enregistrement des dates dans une base de données MySQL dans les champs datetime au format UTC. Je suis à l'aide de PHP, et j'ai appelé date_timezone_set('UTC'), de sorte que tous les appels à date() (sans date) retourne la date au format UTC.

Je puis donc d'un site web donné la possibilité de choisir sa fuseau horaire. Maintenant, je veux dates à afficher dans le site du fuseau horaire. Donc, si j'ai une date stockée comme "2009-04-01 15:36:13", il convient d'affichage pour un utilisateur du PDT du fuseau horaire (-7 heures) '2009-04-01 08:36:13'.

Ce qui est le plus facile (moins de code) méthode pour ce faire via PHP? Jusqu'à présent tout ce que j'ai pensé est

date('Y-m-d H:i:s', strtotime($Site->getUTCOffset() . ' hours', strtotime(date($utcDate))));

Est-il une façon plus simple?

Quel est le problème avec un one-liner?
Rien, si c'est la façon habituelle de faire. Je ne veux pas avoir à coller que des dizaines d'endroits tout au long de mon code si il y a quelque chose de plus simple.
Pas ce que vous avez demandé, mais juste au cas où: n'oubliez pas de régler la base de temps de la zone. Ou MySQL va convertir les dates en lui-même. Voir: dev.mysql.com/doc/refman/5.1/en/time-zone-support.html
phpphil, comment peut-elle le faire? Les champs DATETIME devrait être fuseau horaire agnostique. Vous dites que MySQL va utiliser le système de fuseau horaire, avec des fonctions comme MAINTENANT() et CURDATE()? J'ai ajouté --timezone=UTC à MySQL de mon.cnf.
le manuel dit: "La session en cours paramètre de fuseau horaire affecte l'affichage et le stockage des valeurs de temps qui sont à la zone sensible. Cela comprend les valeurs affichées par des fonctions telles que NOW() ou CURTIME(), et les valeurs stockées et récupérées à partir des colonnes TIMESTAMP. Les valeurs pour les colonnes de type TIMESTAMP sont converti à partir du fuseau horaire actuel à l'UTC pour le stockage, et de l'UTC à l'heure actuelle de la zone à des fins de récupération." avec l'entrée dans vous mon.cnf il devrait fonctionner correctement!

OriginalL'auteur Chad Johnson | 2009-06-04