Я пытаюсь определить с помощью Moment.js, если заданная дата находится между двумя датами. Начиная с версии 2.0.0, Тим добавил isBefore()
и isAfter()
для сравнения дат.
Поскольку isBetween()
метода нет , я подумал, что это сработает:
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! :(");
}
Я убежден, что должен быть лучший способ сделать это. Любые идеи?
javascript
date
momentjs
Джоэл А. Вильярреал Бертольди
источник
источник
isBetween
||
isStart || isEnd
Ответы:
Вы можете использовать один из моментов плагина -> момента дальности дела с диапазоном дат:
источник
В версиях 2.9+ есть
isBetween
функция, но эксклюзивная:Есть обходной путь ...
x.isBetween(a, b) || x.isSame(a) || x.isSame(b)
... что логически эквивалентно
!(x.isBefore(a) || x.isAfter(b))
В версии 2.13 у
isBetween
функции есть четвертый необязательный параметрinclusivity
.Используйте это так:
Дополнительные единицы для рассмотрения:
years, months, days, hours, minutes, seconds, milliseconds
Примечание: единицы измерения по-прежнему необязательны. Используйте
null
в качестве третьего аргумента, чтобы игнорировать единицы измерения, и в этом случае миллисекунды являются детализацией по умолчанию.Посетите официальные документы
источник
x.isBetween(moment(a).subtract(1, 'day'), b)
похоже, тоже делает свое дело.!(x.isBefore(a) || x.isAfter(b))
exclusive
значит?Ты можешь использовать
или
Смотрите здесь: http://momentjs.com/docs/#/query/
источник
isBetween
требуется момент 2.13.0. momentjs.com/docs/#/query/is-betweenЯ верю в это
тоже работает ...
источник
Хорошие новости всем, есть
isBetween
функция! Обновите свою библиотеку;)http://momentjs.com/docs/#/query/is-between/
источник
isBetween
не исчерпывающеmoment('2016-10-30').isBetween('2016-10-30', '2016-10-30', null, '[]'); //true
Используйте 4-й параметр функции moment.isBetween (инклюзивность). Пример:
источник
логически то же самое, что
что сэкономит вам пару строк кода и (в некоторых случаях) вызовы методов.
Может быть проще, чем вставлять весь плагин, если вы хотите сделать это всего один или два раза.
источник
Согласно документации момента js,
Существует плагин Precise Range, написанный Робом Доусоном, который можно использовать для отображения точных, удобочитаемых представлений диапазонов дат / времени, URL: http://codebox.org.uk/pages/moment-date-range-plugin
источник