Estoy tratando de detectar con Moment.js si una fecha determinada está entre dos fechas. Desde la versión 2.0.0, Tim agregó isBefore()
y isAfter()
para la comparación de fechas.
Como no hay un isBetween()
método, pensé que esto funcionaría:
var date = moment("15/02/2013", "DD/MM/YYYY");
var startDate = moment("12/01/2013", "DD/MM/YYYY");
var endDate = moment("15/01/2013", "DD/MM/YYYY");
if (date.isBefore(endDate)
&& date.isAfter(startDate)
|| (date.isSame(startDate) || date.isSame(endDate))
) {
alert("Yay!");
} else {
alert("Nay! :(");
}
Estoy convencido de que debe haber una mejor manera de hacer esto. ¿Algunas ideas?
javascript
date
momentjs
Joel A. Villarreal Bertoldi
fuente
fuente
isBetween
||
isStart || isEnd
Respuestas:
Puede utilizar uno de los complementos de momento -> intervalo de momentos para tratar el intervalo de fechas:
fuente
En las versiones 2.9+ hay una
isBetween
función, pero es exclusiva:Hay una solución inclusiva ...
x.isBetween(a, b) || x.isSame(a) || x.isSame(b)
... que es lógicamente equivalente a
!(x.isBefore(a) || x.isAfter(b))
En la versión 2.13 de la
isBetween
función tiene un cuarto parámetro opcional,inclusivity
.Úselo así:
Más unidades a considerar:
years, months, days, hours, minutes, seconds, milliseconds
Nota: las unidades siguen siendo opcionales. Úselo
null
como tercer argumento para ignorar las unidades, en cuyo caso milisegundos es la granularidad predeterminada.Visite los documentos oficiales
fuente
x.isBetween(moment(a).subtract(1, 'day'), b)
parece hacer el truco también.!(x.isBefore(a) || x.isAfter(b))
exclusive
significa?Puedes usar
o
Ver aquí: http://momentjs.com/docs/#/query/
fuente
isBetween
requiere el momento 2.13.0. momentjs.com/docs/#/query/is-betweenYo creo que
también funciona ...
fuente
Buenas noticias a todos, ¡hay una
isBetween
función! Actualice su biblioteca;)http://momentjs.com/docs/#/query/is-between/
fuente
isBetween
no incluyentemoment('2016-10-30').isBetween('2016-10-30', '2016-10-30', null, '[]'); //true
Utilice el cuarto parámetro de la función moment.isBetween (inclusividad). Ejemplo:
fuente
es lógicamente lo mismo que
lo que le ahorra un par de líneas de código y (en algunos casos) llamadas a métodos.
Podría ser más fácil que introducir un complemento completo si solo desea hacer esto una o dos veces.
fuente
Según la documentación del momento js,
Existe el complemento Precise Range, escrito por Rob Dawson, que se puede usar para mostrar representaciones exactas y legibles por humanos de rangos de fecha / hora, url: http://codebox.org.uk/pages/moment-date-range-plugin
fuente