2010-04-26 8 views
0

Nous avons un site qui exécute actuellement des ventes aux enchères à un certain moment (choisi par l'utilisateur) tout fonctionnait bien, car lorsque le serveur a frappé cette heure la vente aux enchères commencerait. Nous avons ensuite dû ajouter des fuseaux horaires, en fonction de l'endroit où l'utilisateur vivait. Cela ajouterait ou enlèverait un certain nombre d'heures en fonction de la liste déroulante sélectionnée, nous avons de nouveau eu ce travail bien, mais alors tout quand potty quand les horloges ont avancé, m'a pris un moment pour travailler que l'heure d'été maintenant géré pour tout casser.Fuseaux horaires, heure d'été, etc.

Je sais qu'il y a une solution à ce problème car beaucoup de gens ont dû le rencontrer, mais je n'arrive pas à le résoudre.

Notre serveur fonctionne actuellement en UTC.

Toute aide sur ce serait génial ...

Répondre

1

Je ne suis pas 100% à ce sujet, mais je dirais que fourni votre base de données de fuseau horaire (partie de votre système Linux) est alors mise à jour vous devriez être capable de faire ceci:

<?php 
$currentTimezone = date_default_timezone_get(); 
date_default_timezone_set($usersTimezone); 
echo date('j F Y G:i:s'); // Time shown in user's timezone, DST accounted for 
date_default_timezone_set($currentTimezone); 
?> 

Si vous regardez les fonctions de date de PHP, il y a probablement des manières moins sinueuses de le faire. Je ne suis pas très clued sur ces fonctions;)

+0

Il semble réellement que vous pouvez simplement créer une instance de DateTimeZone et demander le décalage. Cela devrait prendre en compte DST, j'imagine. C'est fondamentalement le travail de votre base de données de fuseau horaire pour maintenir tout cela. – d11wtq

+0

Je peux confirmer que cela fonctionne. Je viens de le tester en demandant l'heure à Europe/Londres qui est actuellement en heure d'été. Je suis en Australie/Melbourne et nous ne sommes pas en heure d'été. Le script affiche correctement l'heure à Londres en ce moment. – d11wtq

+0

J'ai travaillé avec le date_default_timezone_set et c'est à peu près là-bas, juste un dernier obstacle à franchir, et où les données sont une heure de sortie lorsqu'il est envoyé au flash ... mais c'est une toute nouvelle question! – jimbo

Questions connexes