Fuseaux horaires? petit casse-tête en PHP

Fermé
saith - 12 mai 2008 à 14:29
 saith - 13 mai 2008 à 02:30
Bonjour tout le monde,

Je suis en train de construire un système de fiches d'inscriptions dans laquelle un champ de date est inclus (modifié pour la dernière fois le 12/05/2008 à 08:20, par exemple).

Mais voilà, mon script est exécuté au Québec et est hébergé en France, ce qui donne une différence de 6h entre l'envoi et la date réelle!

En premier temps, avec date(), j'ai tout simplement retranché 6 à l'heure, sauf que dans des tests hier. vers 10h, je me suis rendu compte que nous étions le 12/05/08 à -02:12...

Quelqu'un aurait une idée de comment contrer ça?

(Autrement qu'en reculant l'heure du serveur...)
A voir également:

1 réponse

Utilisateur anonyme
12 mai 2008 à 16:21
Salut,

Donc ton problème de date peut être résolue avec un petit subterfuge.
Lorsque tu enregistre dans ton serveur tu as les dates en France. çà change le pas. Ca sera ta référence.
Maintenant c'est au niveau de l'affichage que tu va faire les modification.
Il suffit pour cela de travailler en JS car ça te donnera la valeur du navigateur (de ton internaute).
Il suffit de faire une fonction JS qui contiendra un morceau PHP. Je m'explique:

Pour que tu puisse avoir ta date il suffit de récupère la date de décalage serveur par rapport a GMT. (dateserveurGMT) et de récupérer la date décalage navigateur par rapport a GMT (datenavigateurGMT)
Après il suffit de faire les calcul en JS afin que tu récupère la date que tu veut mais fixe toi dans un révérencielle par rapport à GMT. Car en France il existe un décalage horaire entre l'été et l'hiver. comme au Quebec.

Pour afficher ta date il suffit de faire : datevouluheurenavigateur = dateenregistrement - dateserveurGMT + datenavigateurGMT;
Exemple : Si l'enregistrement est effectué à 8:00 le 12/05/2008 - +2h(car heure d'ete fr)+ -4(heure d'ete qc)
08:00-02:00-04:00 = 02:00
Apres a toi de verifier si la valeur afficher pour les heures n'est pas inferieur a 00:00 et si c'est la cas il faut retrancher un jour.

Voila en esperant avoir pu t'aider.
karando
1
pourquoi je pense jamais au JS???

mais je peux faire encore plus simple que ça je crois; l'heure du navigateur me suffit, étant donnée que c'est celle à laquelle la personne l'a modifiée qui m'intéresse.

étant donné que le moindrement que l'heure du navigateur est faussée, dans un code ou l'autre l'heure en sera faussée aussi, retrancher la date du navigateur de la date du serveur me paraît superflu...

à moins que j'aie manqué un bout important et que je sois complètement perdu sans le savoir :)
0