689 votes

La détermination d'un web de temps de l'utilisateur de la zone de

Est-il un moyen standard pour un Serveur Web afin de déterminer ce décalage de fuseau horaire d'un utilisateur?

Peut-être à partir d'un HTTP - tête? Ou partie de l'agent utilisateur description?

344voto

JD Isaacks Points 14540
-new Date().getTimezoneOffset()/60;

getTimezoneOffset() se soustraire votre temps de GMT et de retourner le nombre de minutes. Donc, si vous vivre dans GMT-8, il sera de retour 480. Pour mettre cela en heures, diviser par 60. Aussi, notez que le signe est le contraire de ce que vous avez besoin, c'est le calcul de l'heure GMT du décalage à partir de votre fuseau horaire, pas le temps de la zone de décalage de l'heure GMT. Pour résoudre ce problème, il suffit de multiplier par -1.

213voto

Ishmaeel Points 7720

Les plus populaires (=- =de série?) façon de déterminer le fuseau horaire j'ai vu autour de est tout simplement de demander aux utilisateurs eux-mêmes. Si votre site nécessite un abonnement, ce qui pouvait être sauvé dans le profil des utilisateurs de données. Pour anon utilisateurs, les dates peuvent être affichées en heure UTC ou GMT ou quelque chose du genre.

Je n'essaie pas d'être un smart aleck. C'est juste que parfois certains problèmes avoir plus de solutions en dehors de tout contexte de programmation.

190voto

Mads Kristiansen Points 580

Il n'y a pas d'en-têtes HTTP qui fera rapport sur les clients fuseau horaire jusqu'à présent mais il a été suggéré d'inclure dans la spécification HTTP.

Si c'était moi, je serais probablement essayer de récupérer le fuseau horaire à l'aide de JavaScript côté client et de le soumettre ensuite au serveur à l'aide d'Ajax ou de quelque chose.

56voto

pix0r Points 17854

Javascript est le moyen le plus facile d'obtenir du client, heure locale. Je voudrais suggérer à l'aide d'un XMLHttpRequest de renvoyer le, heure locale, et si cela échoue, revenir à la timezone détectés en fonction de leur adresse IP.

Aussi loin que la géolocalisation, j'ai utilisé MaxMind GeoIP sur plusieurs projets et il fonctionne bien, même si je ne suis pas sûr si elles fournissent des données de fuseau horaire. C'est un service que vous payez pour et ils fournissent des mises à jour mensuelles de votre base de données. Ils fournissent des wrappers dans plusieurs langages web.

54voto

Adam Points 639

Voici une robuste solution d'activer JavaScript pour déterminer le fuseau horaire du navigateur.

>>> var timezone = jstz.determine();
>>> timezone.name(); 
"Europe/London"

http://www.pageloom.com/automatic-timezone-detection-with-javascript

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