[mcbug] Retour vers le futur

Problèmes, bugs et difficultés rencontrés sur le site.
Avatar du membre
Pascal 74
Messages : 482
Enregistré le : 17 juin 2007, 16:37
Localisation : Annecy

[mcbug] Retour vers le futur

Message par Pascal 74 »

Lors d'une modération faite sur la fiche de la Haute Bers, j'ai transféré un commentaire sur le forum de la fiche, puis j'ai répondu à ce commentaire.
Mon texte de réponse s'est retrouvé avant le message transféré, au lieu de se retrouver après. Je m'en suis sorti par une pirouette...
Ce n'est qu'après, en revenant de nouveau sur ce post que j'ai remarqué que la date du message transféré était postérieure à la date de mon message de réponse.

J'ai tenté de reproduire l'évènement : J'ai créé un nouveau commentaire sur la fiche, je l'ai transféré sur le forum et là, bingo, il a pris deux heures de plus !
J'ai laissé le message en place pour preuve.

Hypothèse : le décalage de temps UTC du site se rajoute au décalage de temps UTC du Forum lors du transfert d'un commentaire :roll: (Heures au format UTC+02:00 est indiqué en bas, à droite de la page du forum)

mcbug
Pour une montagne libre.
Avatar du membre
Dominique
Messages : 3477
Enregistré le : 08 avr. 2006, 21:58

Re: Retour vers le futur

Message par Dominique »

Dans les bases, les dates sont toutes stockées en "Unix time" (nombre de secondes depuis le 1er janvier 1970 à minuit)
Elle ne change pas pendant le transfert
Par contre, PhpBB utilise une vielle fonction d'affichage qui ne tient pas compte du fuseau horaire alors que le code de WRI utilse une fonction plus moderne qui rend bien la nuance (sans parler de l'heure d'été !)

Je vois poindre une remarque : mais les posts ont bien la bonne heure sur le forum !
C'est dû au fait que le forum fait l'erreur inverse lors de la saisie de sorte que la date enregistrée est fausse de 2 heures mais apparaît correcte lors de l'affichage

En fait, il serait plus correct de dire que le forum enregistre l'heure Unix GMT (par rapport au 1/1/1970 0h GMT) alors que WRI lit l'heure Unix du serveur (par rapport au 1/1/1970 0h à Paris), le tout sans tenir compte de l'historique des changements d'heures d'été.
Avatar du membre
Pascal 74
Messages : 482
Enregistré le : 17 juin 2007, 16:37
Localisation : Annecy

Re: Retour vers le futur

Message par Pascal 74 »

Dominique a écrit : 15 oct. 2023, 20:07 ...Je vois poindre une remarque : mais les posts ont bien la bonne heure sur le forum !
C'est dû au fait que le forum fait l'erreur inverse lors de la saisie de sorte que la date enregistrée est fausse de 2 heures mais apparaît correcte lors de l'affichage...
Dans ce cas, le message suivant posté dans la foulée devrait se retrouver après (plus bas dans la liste) puisqu'il est à une date postérieure.
Ce n'est pas le cas : il se situe avant (plus haut dans la liste) 'avec la bonne date (UTC+2h), tandis que le message transféré de la fiche affiche une date UTC+4.
Pour une montagne libre.
Avatar du membre
Dominique
Messages : 3477
Enregistré le : 08 avr. 2006, 21:58

Re: Retour vers le futur

Message par Dominique »

Il faudrait que je regarde très précisément des lignes de code assez difficile à interpréter d'autant plus que ça implique l'heure donnée par le serveur (GMT ou pas) quelle interface utilisée, le fuseau horaire déclaré dans le serveur, celui déclaré par utilisateur, ...
J'ai commenté de mémoire, mais ces résultats ne m'étonnent pas.
C'est un sujet difficile que Sly et moi avons laissé tomber car 2 heures n'ont pas grande importance sur notre forum.
Avatar du membre
sly
Messages : 4770
Enregistré le : 29 févr. 2004, 17:59
Localisation : Chambéry - Savoie

Re: Retour vers le futur

Message par sly »

Dominique a écrit : 15 oct. 2023, 20:07 Dans les bases, les dates sont toutes stockées en "Unix time" (nombre de secondes depuis le 1er janvier 1970 à minuit)
Elle ne change pas pendant le transfert
Hou mais oui, on dirait que t'as trouvé ! ça vient p'tet bien de là, j'avais lâchement abandonné quand j'ai vu ce problème il y a longtemps (et devant la moindre importance de gérer la date à l'heure prèt des transfert) mais c'est peut-être bien là que se pose le problème : la date des commentaires sur le site est rentrée comme NOW() et donc pas un unix time stamp comme le fait phpBB

Mais a priori, tout va bien puisque :
The NOW() function returns the current date and time. The return type of the NOW() function is the timestamp with time zone. See the following example:
Donc quand on converti lors du transfert, on a bien le bon unix_time stamp vu qu'on avait en entrée la date + time zone (probablement stoqué en interne comme unix-time timestamp)

Sauf que :

Code : Tout sélectionner

select NOW(),date from commentaires order by date desc limit 1;
now	                                                    date
2023-10-16 16:36:51.728294+02	            2023-10-16 10:25:49.304921
La timezone a été perdue en route !

Je crois que la fautive, c'est la table commentaire, qui ne retient pas la date et sa timezone, de sorte que lors du transfert vers forum, on perd soit 1h soit 2h selon l'heure été/hiver et la zone de la France.

Si ça se trouve, ce serait pas si compliqué à corriger de notre coté, en gardant bien la date. Bon, faut p'tet voir ce que ça implique, car il y a quelques traitement sur cette date, faudrait pas que ça fasse tout sauter, mais ça se tente, je veux bien regarder dès que j'ai un moment.
Mais quelle galère ce changement d'heure (entre autre), 50 ans qu'on y est, on s'en sort toujours pas...