¿Cómo puedo analizar las horas de diferentes zonas horarias?
JavaScript puede hacerlo, como se muestra en el código anterior:
process.env.TZ = "Asia/Jerusalem" // supported on Node v13+ new Date("2022-01-23 10:00").toString() // 10:00 GMT+02 (Israel Standard Time) new Date("2022-07-23 10:00").toString() // 10:00 GMT+03 (Israel Daylight Time) process.env.TZ = "Australia/Melbourne" new Date("2022-01-23 10:00").toString() // 10:00 GMT+11 (Australian Eastern Daylight Time) new Date("2022-07-23 10:00").toString() // 10:00 GMT+10 (Australian Eastern Standard Time) Pero, ¿cómo se puede hacer de una manera menos complicada que cambiar el process.env.TZ ?
Aclaración: El requisito es convertir la hora local a UTC , no al revés.
Convertir UTC a local es fácil:
new Date().toLocaleString("iso", { timeStyle:"full", timeZone:"America/New_York" })Si solo desea el desplazamiento de una zona horaria, puede tomar el nombre IANA para su zona horaria y pasarlo al formato de fecha de la siguiente manera:
const getOffset = (date, timezone) => -new Date(date).toLocaleString([], {timeZone: timezone, timeZoneName: 'shortOffset'}).match(/(?<=GMT|UTC).+/)[0]*60; console.log(getOffset("2022-01-23 10:00", 'Asia/Jerusalem')) console.log(getOffset("2022-07-23 10:00", 'Asia/Jerusalem')) console.log(getOffset("2022-01-23 10:00", 'Australia/Melbourne')) console.log(getOffset("2022-07-23 10:00", 'Australia/Melbourne'))