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

176
Vistas
Obtener todas las fechas entre 2 fechas Javascript

Tengo problemas con una función que se supone que muestra fechas entre dos fechas

He identificado el error y depende de la hora de la fecha de inicio.

 function getDatesInRange(startDate, endDate) { const date = new Date(startDate.getTime()); const dates = []; while (date <= endDate) { dates.push(new Date(date)); date.setDate(date.getDate() + 1); } return dates; } const d1 = new Date(doc.travel_start); const d2 = new Date(doc.travel_end); getDatesInRange(d1, d2)

travel_end: "2022-03-23T20:00:57.118Z" travel_start: "2022-03-20T05:59:57.118Z",

Salida correcta: [ 2022-03-20T05:59:57.118Z, 2022-03-21T05:59:57.118Z, 2022-03-22T05:59:57.118Z, 2022-03-23T05:59:57.118Z ]

Si cambio la marca de tiempo de travel_start a la hora 23, falta la última fecha de mi matriz [ 2022-03-20T21:59:57.118Z, 2022-03-21T21:59:57.118Z, 2022-03-22T21:59:57.118 Z ]

He intentado eliminar la marca de tiempo de travel_start por .setHours(0,0,0,0) sin éxito.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Si no se opone al uso de bibliotecas externas, date-fns tiene muchas funciones útiles, incluido lo que está buscando hacer.

ejemplo:

 import { eachDayOfInterval } from "date-fns"; function getDatesInRange(startDate, endDate) { return eachDayOfInterval({ start: new Date(startDate), end: new Date(endDate) }) } getDatesInRange(d1, d2)

De lo contrario, la respuesta de Shusman parece tener sentido.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Estás en la dirección correcta

setHours podría tener un problema con la zona horaria intente usar setUTCHours ;

y restablecer las fechas de inicio y finalización antes de cualquier cálculo

probar:

 function getDatesInRange(startDate, endDate) { const start = new Date(new Date(startDate).setUTCHours(0, 0, 0, 0)); const end = new Date(new Date(endDate).setUTCHours(0, 0, 0, 0)); const date = new Date(start.getTime()); const dates = []; while (date <= end) { dates.push(new Date(date)); date.setDate(date.getDate() + 1); } return dates; } const travel_start = "2022-03-20T05:59:57.118Z"; const travel_start2 ="2022-03-20T23:59:57.118Z"; const travel_end = "2022-03-23T20:00:57.118Z"; const res1 = getDatesInRange(travel_start, travel_end); const res2 = getDatesInRange(travel_start2,travel_end); console.log('res1', res1) console.log('res2', res2)

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