Sé cómo compensar la zona horaria, pero lo que necesito es la capacidad de detectar algo como "América / Nueva York". ¿Es eso incluso posible desde JavaScript o es algo que voy a tener que estimar en función del desplazamiento?
javascript
timezone
Mike Thomsen
fuente
fuente
Respuestas:
La API de internacionalización admite la obtención de la zona horaria del usuario y es compatible con todos los navegadores actuales.
Tenga en cuenta que en algunas versiones anteriores del navegador que admiten la API de internacionalización, la
timeZone
propiedad se establece en enundefined
lugar de la cadena de zona horaria del usuario. Lo mejor que puedo decir, en el momento de escribir este artículo (julio de 2017), todos los navegadores actuales, excepto IE11 , devolverán la zona horaria del usuario como una cadena.fuente
La respuesta más votada es probablemente la mejor manera de obtener la zona horaria, sin embargo,
Intl.DateTimeFormat().resolvedOptions().timeZone
devuelve el nombre de la zona horaria de IANA por definición, que está en inglés.Si desea el nombre de la zona horaria en el idioma del usuario actual, puede analizarlo a partir
Date
de la representación de cadena de la siguiente manera:Probado en Chrome y Firefox.
Por supuesto, esto no funcionará como se esperaba en algunos de los entornos. Por ejemplo, node.js devuelve un desplazamiento GMT (p
GMT+07:00
. Ej. ) En lugar de un nombre. Pero creo que todavía se puede leer como alternativa.PD No funcionará en IE11, solo como la
Intl...
solución.fuente
Puede utilizar este script. http://pellepim.bitbucket.org/jstz/
Repositorio de bifurcación o clonación aquí. https://bitbucket.org/pellepim/jstimezonedetect
Una vez que incluye el script, puede obtener la lista de zonas horarias en -
jstz.olson.timezones
variable.Y el siguiente código se utiliza para determinar la zona horaria del navegador del cliente.
¡Disfruta de jstz!
fuente
Recuperar zona horaria por nombre (es decir, "América / Nueva York")
fuente
Intl.DateTimeFormat().resolvedOptions().timeZone
Intl.DateTimeFormat().resolvedOptions().timeZone
devuelveundefined
, peromoment.tz.guess()
devuelve el valor correctoSimplemente puede escribir su propio código usando la tabla de mapeo aquí: http://www.timeanddate.com/time/zones/
o use la biblioteca de zona horaria de momento: http://momentjs.com/timezone/docs/
Ver
zone.name; // America/Los_Angeles
o esta biblioteca: https://github.com/Canop/tzdetect.js
fuente
Esto obtiene el código de zona horaria (por ejemplo,
GMT
) en javascript antiguo (estoy usando el script de la aplicación de Google con el motor antiguo):Solo pongo esto aquí en caso de que alguien lo necesite.
fuente
UTC
/GMT
. Parece que otros están detallados; ejPacific Daylight Time
.Pruebe este código, consulte desde aquí
fuente
En javascript, el método Date.getTimezoneOffset () devuelve el desplazamiento de la zona horaria de UTC, en minutos, para la configuración regional actual.
Moment'timezone será una herramienta útil. http://momentjs.com/timezone/
Convertir fechas entre zonas horarias
fuente