Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Date SQL + Prise en compte decalage horaire en PHP

2 réponses
Avatar
Caius Pupus
Bonjour !

Alors voilà, j'ai un p'tit site qui stocke en BDD la date de dernière
connexion des membres inscrits. Cela permet de leur afficher par exemple
: "Votre dernière connexion : 05/06/2011 à 08h24".

Le problème, c'est que certaines des personnes inscrites sur mon site
vivent à l'étranger, et l'heure de dernière connexion est décalée (en
effet, ils voient la date stockée en base, donc celle correspondant à
l'heure française).

Existe-t-il un moyen rapide pour leur afficher la date et heure
correspondante à leur pays ?

Je sais qu'il y ala fonction date_default_timezone_set(), mais celle-ci
est utile seulement si j'appelle la fonction date() (entre autre), ce
qui n'est pas le cas dans mon exemple.

Merci pour votre aide !

CP

2 réponses

Avatar
Olivier Miakinen
Bonjour,

Le 07/06/2011 08:27, Caius Pupus a écrit :

Alors voilà, j'ai un p'tit site qui stocke en BDD la date de dernière
connexion des membres inscrits. Cela permet de leur afficher par exemple
: "Votre dernière connexion : 05/06/2011 à 08h24".

Le problème, c'est que certaines des personnes inscrites sur mon site
vivent à l'étranger, et l'heure de dernière connexion est décalée (en
effet, ils voient la date stockée en base, donc celle correspondant à
l'heure française).

Existe-t-il un moyen rapide pour leur afficher la date et heure
correspondante à leur pays ?



Pour que ce soit possible en PHP seul, tu vas devoir stocker pour chaque
membre son TIMEZONE préféré, après le lui avoir fait saisir. Il faut
aussi qu'ils puissent le changer, en particulier s'ils n'ont pas su ou
pas pu saisir l'information de passage à l'heure d'été.

Ce sera alors à toi de faire la conversion à chaque fois. L'idéal dans
ce cas serait d'ailleurs de stocker les dates en UTC (temps universel
coordonné), et de faire la conversion aussi pour ceux qui habitent en
France métropolitaine.

Je sais qu'il y ala fonction date_default_timezone_set(), mais celle-ci
est utile seulement si j'appelle la fonction date() (entre autre), ce
qui n'est pas le cas dans mon exemple.



Rien ne t'empêche d'appeler la fonction date() en combinaison avec
mktime(), mais je ne sais pas si c'est la meilleure méthode.

À tout hasard, je viens de trouver ceci (en anglais) :
<http://www.ultramegatech.com/blog/2009/04/working-with-time-zones-in-php/>

En voici d'autres :
<http://www.google.fr/search?q=conversion+de+timezone+en+php>

P.-S. : si demander à l'utilisateur de choisir son TIMEZONE ne te semble
pas une bonne solution, mais que tu acceptes d'avoir du JavaScript sur
ton site, tu peux envoyer la date en UTC et faire la conversion d'UTC
vers l'heure locale en JavaScript.

Cordialement,
--
Olivier Miakinen
Avatar
mb
In article <4dec90c3$0$32037$,
Caius Pupus wrote:

j'ai un p'tit site qui stocke en BDD la date de dernière
connexion des membres inscrits. Cela permet de leur afficher par exemple
: "Votre dernière connexion : 05/06/2011 à 08h24".

Le problème, c'est que certaines des personnes inscrites sur mon site
vivent à l'étranger



Bonjour ,

peut-être eût-il mieux valu enregistrer le timestamp et
faire les transformations à l'écriture ?

--
mb