Je sais comment obtenir le décalage du fuseau horaire, mais ce dont j'ai besoin est la capacité de détecter quelque chose comme "Amérique / New York". Est-ce même possible à partir de JavaScript ou est-ce quelque chose que je vais devoir évaluer en fonction du décalage?
javascript
timezone
Mike Thomsen
la source
la source
Réponses:
L' API d'internationalisation prend en charge l'obtention du fuseau horaire de l'utilisateur et est prise en charge dans tous les navigateurs actuels.
Gardez à l'esprit que sur certaines anciennes versions de navigateur prenant en charge l'API d'internationalisation, la
timeZone
propriété est définie surundefined
plutôt que sur la chaîne de fuseau horaire de l'utilisateur. Pour autant que je sache, au moment de la rédaction (juillet 2017), tous les navigateurs actuels, à l'exception d'IE11 , renverront le fuseau horaire de l'utilisateur sous forme de chaîne.la source
La réponse la plus votée est probablement le meilleur moyen d'obtenir le fuseau horaire, cependant,
Intl.DateTimeFormat().resolvedOptions().timeZone
renvoie le nom du fuseau horaire IANA par définition, qui est en anglais.Si vous voulez que le nom du fuseau horaire soit dans la langue de l'utilisateur actuel, vous pouvez l'analyser à partir
Date
de la représentation sous forme de chaîne de la manière suivante:Testé dans Chrome et Firefox.
Bien entendu, cela ne fonctionnera pas comme prévu dans certains environnements. Par exemple, node.js renvoie un décalage GMT (par exemple
GMT+07:00
) au lieu d'un nom. Mais je pense que c'est toujours lisible comme solution de secours.PS ne fonctionnera pas dans IE11, tout comme la
Intl...
solution.la source
Vous pouvez utiliser ce script. http://pellepim.bitbucket.org/jstz/
Fork ou référentiel de clonage ici. https://bitbucket.org/pellepim/jstimezonedetect
Une fois que vous avez inclus le script, vous pouvez obtenir la liste des fuseaux horaires dans -
jstz.olson.timezones
variable.Et le code suivant est utilisé pour déterminer le fuseau horaire du navigateur client.
Profitez de jstz!
la source
Récupérer le fuseau horaire par nom (par exemple "Amérique / New York")
la source
Intl.DateTimeFormat().resolvedOptions().timeZone
Intl.DateTimeFormat().resolvedOptions().timeZone
donne en retourundefined
, maismoment.tz.guess()
renvoie la valeur correcteVous pouvez simplement écrire votre propre code en utilisant le tableau de mappage ici: http://www.timeanddate.com/time/zones/
ou utilisez la bibliothèque moment-timezone: http://momentjs.com/timezone/docs/
Voir
zone.name; // America/Los_Angeles
ou, cette bibliothèque: https://github.com/Canop/tzdetect.js
la source
Cela obtient le code du fuseau horaire (par exemple
GMT
) dans l'ancien javascript (j'utilise le script de l'application Google avec l'ancien moteur):Je mets juste ça ici au cas où quelqu'un en aurait besoin.
la source
UTC
/GMT
. Il semble que les autres soient précisés; par exemplePacific Daylight Time
.Essayez ce code référez-vous à partir d' ici
la source
En javascript, la méthode Date.getTimezoneOffset () renvoie le décalage du fuseau horaire par rapport à UTC, en minutes, pour les paramètres régionaux actuels.
Moment'timezone sera un outil utile. http://momentjs.com/timezone/
Convertir les dates entre les fuseaux horaires
la source