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

163
Vistas
moment.isBetween() no funciona como se esperaba

Estoy usando la biblioteca moment (versión "^ 2.25.3") para verificar si la fecha está entre dos fechas.

Tengo que verificar si araDate está entre dos fechas (fecha de inicio y fecha de finalización) o si araDateMinusOne está entre las fechas (fecha de inicio y fecha de finalización), pero la condición aquí es que la fecha de inicio debe ser igual a araDateMinusOne (es decir, si una fecha de inicio es sep/03 y la fecha de finalización es sep/04, no debería coincidir).

¿Alguien puede decirme qué estoy haciendo mal o por qué exactamente sucede esto?

 const obj = { _id: '614c2b941e06b7003024e1df', promotedtitles: [{ title: '1' }, { title: '2' }], startdate: '2021-09-04T00:00:00.000Z', enddate: '2021-09-04T00:00:00.000Z' }; const camStartDate = moment(obj.startdate).format('YYYY-MM-DD'); // 2021-09-04 const camEndDate = moment(obj.enddate).format('YYYY-MM-DD'); // 2021-09-04 const araDate = moment('2021-09-05T00:00:00.000Z').format('YYYY-MM-DD'); // 2021-09-05 const araDateMinusOne = moment('2021-09-05T00:00:00.000Z').subtract(1, 'day').format('YYYY-MM-DD'); // 2021-09-04 console.log('check', moment(araDate).isBetween(camStartDate, camEndDate, undefined, '[]')); // false which is fine. console.log('another check', moment(araDateMinusOne).isBetween(camStartDate, camEndDate, undefined, '[)')); // this is consoling false, which is incorrect //I also have tried this as well and all the variations. console.log('another check', moment(araDateMinusOne).isBetween(camStartDate, camEndDate, 'day', '[)'));
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.25.3/moment.min.js" ></script>

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

0

La razón por la que devuelve falso para verificar el rango igual y da '[)', como parámetro, la fecha de finalización tiene prioridad aquí. Y cuando está verificando la fecha de finalización, estamos dando un operador de exclusión para eso.

 moment('2021-09-04').isBetween('2021-09-04', '2021-09-04', 'day', '[)'

La solución a este problema es verificar que la fecha esté entre dos fechas y si la fecha de inicio es igual a esa fecha de araMinusOne.

 moment(araDateMinusOne).isBetween(camStartDate, camEndDate, 'day', '[]') && moment(araDateMinusOne).isSame(camStartDate)
about 4 years ago · Juan Pablo Isaza Denunciar

0

los parámetros de inclusión deben ser []

 const obj = { _id: '614c2b941e06b7003024e1df', promotedtitles: [{ title: '1' }, { title: '2' }], startdate: '2021-09-04T00:00:00.000Z', enddate: '2021-09-04T00:00:00.000Z' }; const camStartDate = moment(obj.startdate).format('YYYY-MM-DD'); // 2021-09-04 const camEndDate = moment(obj.enddate).format('YYYY-MM-DD'); // 2021-09-04 const araDate = moment('2021-09-05T00:00:00.000Z').format('YYYY-MM-DD'); // 2021-09-05 const araDateMinusOne = moment('2021-09-05T00:00:00.000Z').subtract(1, 'day').format('YYYY-MM-DD'); // 2021-09-04 console.log('check', moment(araDate).isBetween(camStartDate, camEndDate, undefined, '[]')); // false which is fine. console.log({araDateMinusOne,camStartDate, camEndDate}) console.log('another check', moment(araDateMinusOne).isBetween(camStartDate, camEndDate, undefined, '[]')); // this is consoling false, which is incorrect //I also have tried this as well and all the variations. console.log('another check 1', moment(araDateMinusOne).isBetween(camStartDate, camEndDate, 'day', '[)')); console.log('default check ', moment('2016-10-30').isBetween('2016-10-30', '2016-10-30', undefined, '[]'))
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.25.3/moment.min.js" ></script>

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