Question

Les problèmes d'internationalisation liés à la gestion des chaînes peut être à peu près résolu en suivant les conseils:. Utiliser Unicode et tout stocker en UTF-8 dans votre base de données, vous serez en mesure de servir les clients en utilisant toutes les langues du monde

Mais les problèmes d'internationalisation liés à la manipulation de date / heure?

Questions:

  • Y at-il même facile à suivre les meilleures pratiques pour résoudre les problèmes d'internationalisation du temps de manipulation autour?
  • Comment assurez-vous que vos applications peuvent servir les clients opérant dans différents fuseaux horaires? Quels problèmes avez-vous rencontré et comment avez-vous les résoudre?
Était-ce utile?

La solution

J'ai des conseils suivants,

  1. magasin tout votre temps dans la base de données avec un fuseau horaire, de préférence Zulu (GMT).
  2. Attribuer un fuseau horaire à chaque utilisateur lors de l'inscription. Nous figurons normalement cette information dans la langue de la page d'inscription ou le code intégré dans le lien de promotion. Parfois, nous avons à demander à l'utilisateur.
  3. fuseau horaire-aware clients. Cela signifie client ne peut pas afficher l'heure du serveur comme il est. Doit être affiché dans le fuseau horaire local et au format local.
  4. Le client doit faire un effort pour obtenir des informations fuseau horaire du système. Sinon, le serveur peut deviner à partir de diverses données. Nous avons obtenu de bons résultats en utilisant la première langue, puis l'adresse IP. Dans tous les cas, le client doit afficher l'heure avec des informations de zone si l'utilisateur sait ce qui se passe quand le temps est mauvais.
  5. besoin d'indicateurs spéciaux pour certaines valeurs de temps qui n'est pas affecté par le fuseau horaire. Nous avons eu une erreur que les changements d'anniversaire de l'utilisateur quand ils changent leur région. D'autres choses appartenant à cette catégorie, y compris les jours de magasin etc heures.
  6. Si vous devez synchroniser l'horloge avec le serveur, s'il vous plaît ne pas changer le temps du système, juste stocker le delta dans votre client. Nous avions une exigence de sécurité que l'horloge doit être en phase avec l'hôte. Ainsi, notre client permet de synchroniser l'horloge système avec notre serveur au démarrage. C'est la mauvaise chose à faire. Pour les anciens systèmes comme Windows 95 sans fuseau horaire, nous avons changé leur temps en GMT. Enfin, les anciens clients sont partis, mais nous sommes confrontés à un nouveau problème est que nous avons foiré l'heure exacte de NTP.

Espérons que certaines de nos erreurs vous aidera à les éviter.

Autres conseils

ZZCoder a quelques bons points. Voici encore plus:

  • Toutes les valeurs datetime doit avoir un fuseau horaire associé. Vous devez définir ce que cela signifie que si un datetime n'a pas un (par exemple, dans certains cas, cela signifie GMT + 0, dans d'autres il est parce que le code est au milieu de figurer dehors et l'attribution d'un).
  • Vous aurez probablement besoin d'attacher des événements avec un datetime à un endroit. Cela signifie que vous aurez un moyen de déterminer si le fuseau horaire d'un datetime est autorisé à changer. Cela résout le problème des anniversaires en mouvement, mais il permet aussi un comportement intelligent quand l'heure d'été commence ou se termine. Cependant, soyez prudent des relations non intentionnelles. La mise en place d'une réunion de plusieurs personnes dans différents fuseaux horaires doit faire référence à une entrée canonique, ne pas copier datetimes et les localiser
  • Ne pas Rendez-vous: calculs. Toujours toujours toujours demander aux fonctions de bibliothèque pour faire des calculs datetime

Je avais eu un peu de chance avec cela en utilisant un peu de JavaScript pour que le client nous informer de leur fuseau horaire. Si je me souviens qu'il consistait à calculer l'heure actuelle sur la machine de l'utilisateur à l'heure locale, puis à comparer que contre le zoulou.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top