Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

174
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!