Estou tentando detectar com Moment.js se uma determinada data está entre duas datas. Desde a versão 2.0.0, Tim adicionou isBefore()
e isAfter()
para comparação de datas.
Como não há isBetween()
método, achei que isso funcionaria:
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! :(");
}
Estou convencido de que deve haver uma maneira melhor de fazer isso. Alguma ideia?
javascript
date
momentjs
Joel A. Villarreal Bertoldi
fonte
fonte
isBetween
||
isStart || isEnd
Respostas:
Você pode usar um plugin do momento -> intervalo de momento para lidar com o intervalo de datas:
fonte
Nas versões 2.9+, há uma
isBetween
função, mas é exclusiva:Existe uma solução alternativa inclusiva ...
x.isBetween(a, b) || x.isSame(a) || x.isSame(b)
... que é logicamente equivalente a
!(x.isBefore(a) || x.isAfter(b))
Na versão 2.13, a
isBetween
função possui um quarto parâmetro opcionalinclusivity
,.Use-o assim:
Mais unidades a serem consideradas:
years, months, days, hours, minutes, seconds, milliseconds
Nota: as unidades ainda são opcionais. Use
null
como o terceiro argumento para desconsiderar unidades, caso em que milissegundos é a granularidade padrão.Visite a documentação oficial
fonte
x.isBetween(moment(a).subtract(1, 'day'), b)
parece fazer o truque também.!(x.isBefore(a) || x.isAfter(b))
exclusive
significa?Você pode usar
ou
Veja aqui: http://momentjs.com/docs/#/query/
fonte
isBetween
requer momento 2.13.0. momentjs.com/docs/#/query/is-betweenEu acredito nisso
funciona tambem ...
fonte
Boas notícias a todos, há uma
isBetween
função! Atualize sua biblioteca;)http://momentjs.com/docs/#/query/is-between/
fonte
isBetween
não inclusivomoment('2016-10-30').isBetween('2016-10-30', '2016-10-30', null, '[]'); //true
Use o 4º parâmetro da função moment.isBetween (inclusividade). Exemplo:
fonte
é logicamente o mesmo que
o que economiza algumas linhas de código e (em alguns casos) chamadas de método.
Pode ser mais fácil do que puxar um plugin inteiro se você quiser fazer isso apenas uma ou duas vezes.
fonte
Conforme a documentação do momento js,
O plugin Precise Range, escrito por Rob Dawson, pode ser usado para exibir representações exatas e legíveis de intervalos de data / hora, url: http://codebox.org.uk/pages/moment-date-range-plugin
fonte