Próbuję wykryć za pomocą Moment.js, czy podana data przypada między dwiema datami. Od wersji 2.0.0 Tim dodał isBefore()
i isAfter()
do porównania dat.
Ponieważ nie ma isBetween()
metody, pomyślałem, że to zadział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! :(");
}
Jestem przekonany, że musi być lepszy sposób na zrobienie tego. Jakieś pomysły?
javascript
date
momentjs
Joel A. Villarreal Bertoldi
źródło
źródło
isBetween
||
isStart || isEnd
Odpowiedzi:
Możesz użyć jednej z wtyczek chwili -> zakres momentu, aby poradzić sobie z zakresem dat:
źródło
W wersjach 2.9+ jest
isBetween
funkcja, ale jest ona wyłączna:Istnieje integracyjne obejście ...
x.isBetween(a, b) || x.isSame(a) || x.isSame(b)
... co jest logicznym odpowiednikiem
!(x.isBefore(a) || x.isAfter(b))
W wersji 2.13
isBetween
funkcja ma czwarty opcjonalny parametrinclusivity
.Użyj tego w ten sposób:
Więcej jednostek do rozważenia:
years, months, days, hours, minutes, seconds, milliseconds
Uwaga: jednostki są nadal opcjonalne. Użyj
null
jako trzeciego argumentu, aby zignorować jednostki, w przypadku których domyślną szczegółowością są milisekundy.Odwiedź oficjalne dokumenty
źródło
x.isBetween(moment(a).subtract(1, 'day'), b)
wydaje się również działać.!(x.isBefore(a) || x.isAfter(b))
exclusive
znaczy?Możesz użyć
lub
Zobacz tutaj: http://momentjs.com/docs/#/query/
źródło
isBetween
wymaga momentu 2.13.0. momentjs.com/docs/#/query/is-betweenWierzę w to
też działa ...
źródło
Dobra wiadomość dla wszystkich, jest
isBetween
funkcja! Zaktualizuj swoją bibliotekę;)http://momentjs.com/docs/#/query/is-between/
źródło
isBetween
nie obejmujemoment('2016-10-30').isBetween('2016-10-30', '2016-10-30', null, '[]'); //true
Użyj czwartego parametru funkcji moment.isBetween (włączanie). Przykład:
źródło
jest logicznie taki sam jak
co pozwala zaoszczędzić kilka wierszy kodu i (w niektórych przypadkach) wywołań metod.
Może być łatwiejsze niż wciągnięcie całej wtyczki, jeśli chcesz to zrobić tylko raz lub dwa razy.
źródło
Zgodnie z dokumentacją momentu js,
Istnieje wtyczka Precise Range, napisana przez Roba Dawsona, która może być używana do wyświetlania dokładnych, czytelnych dla człowieka reprezentacji zakresów dat / godzin, adres URL: http://codebox.org.uk/pages/moment-date-range-plugin
źródło