Je vous ai lu comment faire cela toute la matinée, et le consensus général est le suivant: stockez vos horodatages en UTC et calculez le décalage à partir de là. Cependant, comme la plupart des gens, je maintiens une base de code existante et je ne peux pas changer la façon dont nous stockons nos dates. Au moins, pas dans le délai imparti.Affichage des fuseaux horaires sans utiliser l'UTC
Donc, ma question est, puis-je faire quelque chose comme ça en toute sécurité?
// this is my time zone
$timestamp = strtotime($timestampFromDatabase);
date_default_timezone_set('America/New York');
$tz = date_default_timezone_get();
// this is theoretically their timezone, which will eventually
// be taken from a session variable
date_default_timezone_set('Europe/Paris');
$offset = time() - $timestamp;
$timestamp -= $offset;
// now that I have the offset, display dates like this
date('r', $timestamp);
Certaines personnes ont déconseillé de faire des calculs de dates, mais est ce que je fais ici mal? Y a-t-il un meilleur moyen? Y a-t-il des pièges à surveiller? Je suis particulièrement intéressé par le genre de bugs que cette méthode pourrait produire, et le cas échéant, qui vont-ils affecter?
Mon patron est le genre de gars qui ne se soucie pas si le bogue affecte seulement 1% de la base d'utilisateurs.
Éditer: Puis-je clarifier cela? Je ne semble pas avoir trop de preneurs à ce sujet. N'importe qui? Même une suggestion vague ou un lien serait extrêmement utile.
Vous pouvez également utiliser cette approche pour mettre à jour votre base de données UTC dans un hors emploi pour une utilisation future. –
C'est génial. Cependant, supposons que je cours PHP 5.14, qui n'a pas cet objet. Y a-t-il un autre moyen? –
Zend Framework a une solution basée sur PHP dans Zend_Date, mais demande PHP 5.2.4 comme une exigence générale pour le framework. Cela peut fonctionner. Pouvez-vous mettre à jour ou recompiler PHP? –