46 votes

Stockage de la date et de l'heure en tant qu'UTC en PHP/MySQL

Partout où je lis à propos de la conversion de l'heure dans le fuseau horaire d'un utilisateur, on dit que la meilleure méthode est de stocker une date et une heure en UTC, puis d'ajouter simplement le décalage de fuseau horaire de l'utilisateur à cette heure.

Comment puis-je stocker une date en temps UTC ? J'utilise le champ DATETIME de MySQL.

Lorsque j'ajoute un nouvel enregistrement à MySQL dans mon code PHP, j'utiliserais now() pour insérer dans DATETIME de MySQL.

Aurais-je besoin d'utiliser quelque chose de différent de now() pour stocker l'heure UTC ?

1 votes

Si vous empruntez cette voie, n'oubliez pas de tenir compte de l'heure d'été - c'est-à-dire que le décalage horaire n'est pas nécessairement constant pour l'emplacement d'un utilisateur donné.

1 votes

Oui, j'ai lu tellement de choses confuses et contradictoires sur comment gérer les fuseaux horaires en PHP, il semble que ce soit l'une des choses que PHP doit améliorer.

1 votes

Pour ceux qui cherchent plus d'informations, je mets en lien ces fabuleux articles : infiniteundo.com/post/25326999628/… et infiniteundo.com/post/25509354022/…

0voto

Rahim Khoja Points 615

Aléatoire: UTC_TIMESTAMP(6) pour l'heure avec 6 chiffres de microsecondes.

MySQL 5.7+

0voto

theking2 Points 133

Comme indiqué (https://dev.mysql.com/doc/refman/8.0/fr/time-zone-support.html), définissez le fuseau horaire lors de la connexion :

SET TIME_ZONE = 'UTC';

Après cela, toutes les fonctions datetime doivent être en UTC.

Évitez d'utiliser TIMESTAMP() car ce n'est pas sûr pour l'année 2038.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X