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

216
Vistas
new Date(...).toISOString() en JavaScript da un resultado incorrecto en un día del año

Estoy construyendo un calendario y noté que la fecha es incorrecta en un día del año.

Quería estandarizar las fechas a ISO 8601. Tomemos 2022-03-27 por ejemplo:

 const foo = new Date(2022, 2, 27).toISOString()

Esto da 2022-03-27T00:00:00.000Z como era de esperar.

Sin embargo, al día siguiente, 2022-03-28 :

 const bar = new Date(2022, 2, 28).toISOString()

Esto da 2022-03-27T23:00:00.000Z - 27 de marzo a las 23:00.

¿Por qué pasó esto?

about 4 years ago · Santiago Gelvez
1 Respuestas
Responde la pregunta

0

Lo que sucede es que el horario de verano británico (horario de verano, también conocido como DST) se activa entre sus dos ejemplos (específicamente, comienza a la 01:00 el 2022-03-27). toISOString siempre le da la hora UTC (GMT), como puede ver en la Z al final de la cadena, pero su hora local está una hora por delante de la UTC después de la 01:00 el 27-03-2022 hasta que finaliza el horario de verano a las 02:00 el 30 de octubre de 2022.

En su primer ejemplo, está creando una Date con la hora local de la medianoche del 27 de marzo de 2022, cuando su hora local es (aparentemente) GMT+00:00 (como la mía aquí en el Reino Unido). Entonces, toISOString le devuelve 00:00 porque su hora local es GMT/UTC (esa fecha/hora es una hora antes de que comience el horario de verano).

Pero en su segundo ejemplo, está creando una Date en la hora local a la medianoche del 2022-03-28, cuando está en horario de verano. Por lo tanto, está desplazado de UTC por una hora (UTC está una hora detrás de usted). Medianoche 2022-03-28 Hora del Reino Unido es 23:00 2022-03-27 UTC.

No sé qué quieres hacer con estas cosas, pero si quieres crear una Date para la medianoche UTC del 28 de marzo de 2022, usa new Date(Date.UTC(2022, 2, 28)) .

about 4 years ago · Santiago Gelvez 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