J'ai une application Web multi-fuseaux horaires qui stocke toutes les valeurs de date et heure dans la base de données, lorsque des actions se produisent sur le serveur, je peux facilement convertir le temps en UTC.
Cependant, lorsqu'un client entre dans un intervalle de temps ou de temps, quel est le meilleur moyen de le détecter et de le stocker?
Je fais actuellement ce qui suit:
Indépendamment de la mise en œuvre effective, cela semble être une solution élégante. Est-ce que quelqu'un a une meilleure méthode?
Je faisais quelque chose de très similaire, mais je pense maintenant que je préfère utiliser javascript pour convertir tous les temps en local du côté client. Le serveur donnera toutes les heures en UTC dans la page générée, et le javascript le convertira une fois que la page sera chargée.
Cela élimine la confusion sur le code côté serveur, car je sais toujours à quelle heure il est (UTC). Du côté du client, j'utilise jquery et la fonction each () pour formater toutes les valeurs du temps à la fois. J'écris chaque fois comme un temps unix dans un champ caché pour rendre cela facile à traiter avec jquery.
Les seuls problèmes que je vois avec cette méthode sont les suivants: a) Je n'ai pas encore une véritable bonne mise en forme de date / heure en javascript, et b) si l'utilisateur a désactivé javascript, cela ne fonctionne pas.
Vous pouvez utiliser la propriété "en-tête" de l'objet HttpRequest pour interroger l'en-tête "If-Modified-Since" envoyé par le client. Cet en-tête devrait contenir une date dans un format qui inclut le fuseau horaire du client, comme ceci:
If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
Une simple extraction de sous-chaîne vous donnera le code fuseau horaire. Cependant, je crains que tous les navigateurs ne soient cohérents dans l'envoi de cet en-tête, donc vous devriez expérimenter un peu à ce sujet.
Cordialement, Fabrizio