Как использовать Moment.JS, чтобы проверить, находится ли текущее время в 2 раза
Скажите, что текущее время 09:34:00
(hh:mm:ss
), и у меня есть два других раза в двух переменных:
var beforeTime = '08:34:00',
afterTime = '10:34:00';
Как использовать Moment.JS, чтобы проверить, находится ли текущее время между beforeTime
и afterTime
?
Я видел isBetween()
, и я попытался использовать его как:
moment().format('hh:mm:ss').isBetween('08:27:00', '10:27:00')
но это не работает, потому что, как только я отформатирую первый (текущий момент) момент в строке, это уже не мгновенный объект. Я также пробовал использовать:
moment('10:34:00', 'hh:mm:ss').isAfter(moment().format('hh:mm:ss')) && moment('08:34:00', 'hh:mm:ss').isBefore(moment().format('hh:mm:ss'))
но я получаю false
, потому что снова, когда я отформатирую текущее время, это уже не мгновение.
Как мне заставить это работать?
Ответы
Ответ 1
- Вы можете передать экземпляры момента в
isBetween()
- оставьте вызов
format()
, вам нужно передать форматы разбора, такие как int первый момент() вашей второй попытки.
Что все:
var format = 'hh:mm:ss'
// var time = moment() gives you current time. no format required.
var time = moment('09:34:00',format),
beforeTime = moment('08:34:00', format),
afterTime = moment('10:34:00', format);
if (time.isBetween(beforeTime, afterTime)) {
console.log('is between')
} else {
console.log('is not between')
}
// prints 'is between'
Ответ 2
Пример на этой странице
moment('2010-10-20').isBetween('2010-10-19', '2010-10-25'); // true
нет вызова функции format
, как в вашем коде, поэтому я предлагаю попробовать
moment('09:34:00').isBetween('08:34:00', '10:34:00');