Estoy muy confundido al seguir el comportamiento al comparar dos fechas:
moment(date).format('YYYY-MM-DD') '2022-07-15' moment(range.end).subtract(1, 'days').format('YYYY-MM-DD') '2022-07-15'porqué entonces:
moment(date) <= moment(range.end).subtract(1, 'days')
¿Cuál debería ser la forma correcta de comparar estos días para que la fecha sea igual, gt, lt usando momentjs?
ACTUALIZAR:
usando isSameOrBefore después de tener ambas fechas envueltas en un momento:
date.format('YYYY-MM-DD') '2022-07-15' range.end '2022-07-16' moment(date).format('YYYY-MM-DD') '2022-07-15' moment(range.end).subtract(1, 'days').format('YYYY-MM-DD') '2022-07-15' moment(date).isSameOrBefore(moment(range.end).subtract(1, 'days')) falseSupongo que lo tengo:
moment(date).isSameOrBefore(moment(range.end).subtract(1, 'days'), 'day')
proporcionar el nivel de granularidad de la comprobación al día parece funcionar.
Como el segundo parámetro determina la precisión, y no solo un valor único para verificar, el uso de day verificará el año, el mes y el día .
Moment nos da isBefore , isAfter , isSame , isSameOrBefore etc. para hacer estas comparaciones.
var a = moment().format('YYYY-MM-DD') var b = moment().subtract(1, 'days').format('YYYY-MM-DD') console.log(moment(a).isAfter(b)); console.log(moment(a).isBefore(b)); console.log(moment(a).isSameOrBefore(b)); // sometimes you may want to provide precision level of comparision like this: console.log(moment(a).isSameOrBefore(b, 'day')); <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.4/moment.min.js"></script>