9
votes

Comment gérez-vous des problèmes de fuseau horaire?

Pour un système de planification, quelle est la meilleure façon de sauvegarder le fuseau horaire du client / événement dans une base de données centrale de serveur provenant de plusieurs sources mobiles, Web, application client.

  • Comment stockez-vous les dates? Alarmes, rappels, etc.
  • Comment gérez-vous le réglage DST?
  • Comment gérez-vous les événements si le client s'est rendu dans un endroit différent?

    J'ai besoin de la solution pour travailler avec toutes les bases de données dans les balises.


1 commentaires

Notez que les réponses énumérées ci-dessous suggèrent toutes une approche pure-UTC, qui est pas idéal pour le cas des systèmes de planification. Voir la réponse acceptée en post DUP. Merci.


4 Réponses :


8
votes

tout en UTC et une autre colonne pour le décalage.


8 commentaires

Le décalage peut changer lorsque DST change, comment allez-vous quand vous devez changer le décalage?


Absolument la bonne réponse. Si vous n'utilisez pas un fuseau horaire spécifique pour baser tous vos horodatages, etc., vous allez avoir un monde de problèmes. Il suffit d'utiliser une table de recherche offset avec des plages de date, puis reliez votre utilisateur à cela. Ne stockez pas le décalage comme un nombre réel.


Le décalage est stocké selon E.G. est5edt .


Mais cela peut changer avec DST, par exemple je suis sur GMT + 2 en hiver et GMT + 3 en été


Cela vous fait eet2eedt . Ou quelle que soit la désignation.


J'utilise habituellement des noms de zone de ZoneInfo ( en.wikipedia.org/wiki/zoneinfo ) qui sont disponible dans la plupart du système que j'utilise (Java / PostgreSQL / UNIX) et qui ne change pas lorsque DST se produisent


Vérifiez convert_tz dans mysql. Vérifiez Steve G Répondre


PostgreSQL peut convertir le fuseau horaire à la volée: "Sélectionnez Timeestamp_utc_field au fuseau horaire 'America / Chicago'", par exemple, convertit les données dans le champ à la valeur appropriée, y compris les ajustements pour DST.



3
votes

Store Dates comme TimeStamps UTC - Convertissez en temps local lors de l'affichage des données à l'utilisateur.


0 commentaires

0
votes
  1. Safe to stocker dans un fuseau horaire spécifique idéalement dans UTC
  2. Si vous stockez l'heure avec une date, vous êtes en sécurité à DST.
  3. vous suggère d'utiliser un service Web pour trouver la différence de temps.

0 commentaires

5
votes

Ce sont les points clés de la stratégie que j'ai tendance à utiliser.

  • Chaque date est UTC à l'intérieur du système.
  • Les utilisateurs sont affichés dates dans leur fuseau horaire local.
  • Nous permettons aux utilisateurs de remplacer le fuseau horaire qu'ils utilisent au cas où ils voyagent et qu'ils veulent garder le fuseau horaire cohérent.
  • Faites le fuseau horaire facilement visible. Soit l'afficher avec l'heure ou dans le cadre de l'en-tête de colonne.

0 commentaires