Correction du décalage horaire des horaires de planning côté public - #2381
Merged
Conversation
Le filtre date de Twig ne se contente pas de formater : il convertit la date vers la timezone par défaut de Twig, c'est-à-dire celle de PHP, en ignorant celle portée par l'objet DateTime. Les horaires étant stockés en timestamp, la page programme (et les autres affichages) montraient donc de l'UTC en production, où PHP tourne en UTC, alors que le conteneur de dev est en Europe/Paris. Planning::TIMEZONE est désormais exposée à Twig via le global planning_timezone, et passée explicitement à chaque affichage d'un horaire de planning : page programme, widget talk, espace conférencier et back-office (qui recevait jusqu'ici la constante via une variable de rendu dédiée, maintenant redondante). L'export CSV pour joind.in formatait lui aussi les horaires dans la timezone du serveur : il les convertit désormais dans celle de l'événement.
xavierleune
requested review from
Mopolo,
agallou and
stakovicz
as code owners
September 1, 2026 12:52
stakovicz
approved these changes
Sep 1, 2026
Member
Author
|
les tests qui échouent ne sont pas liés |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Dans la foulée de #2354, la page programme affichait toujours les horaires en UTC en production (exemple :
/blog/forumphp2026/program).Cause
Le filtre
datede Twig (etformat_datetime) ne se contente pas de formater : il convertit la date vers la timezone par défaut de Twig, c'est-à-diredate_default_timezone_get(), en ignorant la timezone portée par l'objetDateTime. Les horaires de planning étant stockés en timestamp, ils s'affichaient donc en UTC en production, où PHP tourne en UTC — invisible en local, le conteneur de dev étant enEurope/Paris.Reproduit avec le Twig du projet, PHP en UTC :
Corriger la timezone à l'hydratation de
Planningn'aurait rien changé à l'affichage : Twig la réécrit. Il faut la passer au filtre, comme le fait déjà le back-office depuis #2354.Correctif
Planning::TIMEZONEest exposée à Twig via un globalplanning_timezone, utilisé partout où un horaire de planning est affiché :config/packages/twig.yamlplanning_timezonedepuisPlanning::TIMEZONEtemplates/blog/program.html.twigtemplates/blog/talk.html.twigtemplates/event/speaker/page.html.twigformat_datetimede l'espace conférenciertemplates/event/session/index.html.twigController/Admin/Event/Session/IndexAction.phptimezonede rendu devenue redondanteEvent/Talk/ExportGenerator.phpPour l'export, la conversion passe par
DateTimeImmutable::createFromInterface()afin de ne pas muter l'entité — même forme queformatForCalendar()dans le back-office.Vérifications
dateetformat_datetime, avec le Twig du projet et PHP en UTC.07:30→09:30, entité non mutée).php -lsur le fichier PHP modifié.!php/constbien résolu pour les fichiersconfig/packages(Yaml::PARSE_CONSTANTdansYamlFileLoader::loadFile).🤖 Generated with Claude Code
https://claude.ai/code/session_01LZbMGRyWSL66qwp1551MXd