Mauvais fuseau horaire pour "heure client"

Bonjour,

J’ai un soucis de mauvaise détection du fuseau horaire "client, ce qui fait que lors de l’utilisation de l’agenda les heures se retrouvent enregistrées avec un décalage : un événement créé pour 10h se retrouve enregistré pour 9h.

La config côté serveur est correcte, à priori c’est plus la détection du fuseau horaire du navigateur qui pose problème.

Fuseau horaire PHP (serveur) +1 (+3600) Europe/Paris Heure d’été: Non (Oui en été)
=> Heure PHP (serveur) 16/02/2022 11:05
=> dol_print_date(0,« dayhourtext ») 01 Janvier 1970 01:00
=> dol_get_first_day(1970,1,false) -3600 (=> dol_print_date() or idate() of this value = 01/01/1970 00:00)
=> dol_get_first_day(1970,1,true) 0 (=> dol_print_date() or idate() of this value = 01/01/1970 01:00)
Fuseau horaire client (utilisateur) (+0) Heure d’été: Non
=> Heure client (utilisateur) 16/02/2022 10:05

Le problème se pose de manière identique avec Firefox et Chromium. Ça n’est pas lié à un paramétrage spécifique du navigateur car le problème se pose même avec des profils navigateurs « vierges », fraîchement installés, sans configuration particulière et sans adblock ou autre plugin.

J’ai constaté le problème avec Firefox 91.6.0esr sur Windows 10 et Linux Debian 11 ainsi qu’avec Chromium 98.0.4758.80 sur Debian 11.

Est-ce que quelqu’un a une idée de comment régler ça ?

Dans le pire des cas, est-ce qu’il existe un moyen de désactiver la détection du fuseau horaire client et de considérer qu’il est forcément identique au serveur ?

Merci d’avance.

Est-ce que le fuseau horaire du serveur mysql et de l’OS serveur est cohérent aussi ?
J’ai bien compris que votre problème se situe apparemment coté navigateur mais cela n’exclus pas au moment de la création dans la BDD une conversion hasardeuse.

Oui, à priori c’est tout bon :

sur l’OS du serveur web

cat /etc/timezone
Europe/Paris

sur un poste client Linux où l’on constate le problème :

cat /etc/timezone
Europe/Paris

au niveau de MariaDB

MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE ‹ time_zone ›;
±--------------±-------+
| Variable_name | Value |
±--------------±-------+
| time_zone | SYSTEM |
±--------------±-------+

et sur l’OS du serveur MariaDB

cat /etc/timezone
Europe/Paris

Bonjour,

Je rencontre le même problème. Avez-vous trouvé une solution ?

Bonjour,

Malheureusement, non.

Bonjour

Extrait du wiki :

MAIN_SERVER_TZ ► If you can’t set the time zone of your PHP installation, set this constant. Better is to set it to UTC. In future, this constant will be forced to ‹ UTC › so PHP server time zone will not have effect any more. Examples: Europe/Paris, auto.

Avez vous testé ? @+

Oui. En fait ce paramètre change l’heure du côté serveur, mais celle du “client” subit un décalage par rapport à cette dernière. Je joins une capture d’écran des Paramètres de localisation dans Infos Dolibarr pour que ce soit plus explicite :