Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

178
Vistas
¿Cómo puedo obtener la marca de tiempo en javascript de una cadena que incluye el nombre de la base de datos de la zona horaria?

Recibí la siguiente cadena: "2022/05/01 03:10:00" y necesito crear un objeto de fecha que lo obligue a usar la compensación UTC de Chile.

El problema es que debido al horario de verano (DST), la compensación cambia dos veces al año.

¿Cómo se puede obtener ese objeto Fecha, por ejemplo, usando el nombre TZ db "América/Santiago"?

Algo como:

new Date("2022/05/01 03:10:00" + getUtcOffset("America/Santiago")) .

 function getUtcOffset(tzDbName) { .. }

Devuelve -3 o -4, dependiendo de la época del año.

EDITAR:

Terminé usando un buen truco para determinar si DST estaba activado o desactivado. referencia

 const dst = hasDST(new Date(strDate)); function hasDST(date = new Date()) { const january = new Date(date.getFullYear(), 0, 1).getTimezoneOffset(); const july = new Date(date.getFullYear(), 6, 1).getTimezoneOffset(); return Math.max(january, july) !== date.getTimezoneOffset();

}

Entonces podría crear la fecha con la zona horaria correcta dependiendo de esa variable.

 if (dst) { let d = new Date(strDate + " GMT-0300"); return d; } else { let d = new Date(strDate + " GMT-0400"); return d; }

¡Gracias a todos!

EDIT2: finalmente encontré una biblioteca muy agradable que hace exactamente lo que estaba buscando:

https://date-fns.org/v2.28.0/docs/Time-Zones#date-fns-tz

 const { zonedTimeToUtc, utcToZonedTime, format } = require('date-fns-tz') const utcDate = zonedTimeToUtc('2022-05-05 18:05', 'America/Santiago')
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Esto ha sido discutido antes aquí . No lo he probado, pero parece que la solución más simple es:

 // Example for Indian time let indianTime = new Date().toLocaleTimeString("en-US", {timeZone:'Asia/Kolkata',timestyle:'full',hourCycle:'h24'}) console.log(indianTime)

Puede consultar el enlace para obtener respuestas y bibliotecas más complejas.

Notas generales Para obtener el nombre de la zona horaria, utilice:

 console.log(Intl.DateTimeFormat().resolvedOptions().timeZone)

Para obtener la diferencia de UTC (en minutos) use:

 var offset = new Date().getTimezoneOffset(); console.log(offset); // if offset equals -60 then the time zone offset is UTC+01
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda