如何使用 Moment.JS 检查当前时间是否在2倍之间

假设当前时间是 09:34:00(hh:mm:ss) ,在两个变量中还有另外两个时间:

var beforeTime = '08:34:00',
afterTime = '10:34:00';

如何使用 Moment.JS 检查当前时间是否在 beforeTimeafterTime之间?

我看过 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,因为当我格式化当前时间时,它不再是一个时刻。

我怎么才能让这个起作用?

87462 次浏览

那页上的例子是

moment('2010-10-20').isBetween('2010-10-19', '2010-10-25'); // true

在你的代码中没有调用 format函数,所以我建议你尝试一下

moment('09:34:00').isBetween('08:34:00', '10:34:00');
  • 您可以将瞬间实例传递给 isBetween()
  • 省略 format()调用,您需要的是传递解析格式,如第二次尝试的第一个瞬间()。

仅此而已:

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'

我必须使用 isBetweenisSame在我的情况下,以涵盖 beforeafter的时间,我使用的是之间的条件。

function getTimeCategory(time) {
let timeCategory = '';
const timeFormat = 'HH:mm:ss';


if (
time.isBetween(moment('00:00:00', timeFormat), moment('04:59:59', timeFormat)) ||
time.isSame(moment('00:00:00', timeFormat)) ||
time.isSame(moment('04:59:59', timeFormat))
) {
timeCategory = 'DAWN';
} else if (
time.isBetween(moment('05:00:00', timeFormat), moment('11:59:59', timeFormat)) ||
time.isSame(moment('05:00:00', timeFormat)) ||
time.isSame(moment('11:59:59', timeFormat))
) {
timeCategory = 'MORNING';
} else if (
time.isBetween(moment('12:00:00', timeFormat), moment('16:59:59', timeFormat)) ||
time.isSame(moment('12:00:00', timeFormat)) ||
time.isSame(moment('16:59:59', timeFormat))
) {
timeCategory = 'NOON';
} else if (
time.isBetween(moment('17:00:00', timeFormat), moment('23:59:59', timeFormat)) ||
time.isSame(moment('17:00:00', timeFormat)) ||
time.isSame(moment('23:59:59', timeFormat))
) {
timeCategory = 'NIGHT';
}


return timeCategory;
}

我用矩函数组合 isSameOrAfter 和 isSameOrBefore 代替 isBetween。

if(moment(currentTime,'HH:mm:ss').isSameOrAfter(moment(shift_dayFrom,'HH:mm:ss')) &&
moment(currentTime,'HH:mm:ss').isSameOrAfter(moment(shift_dayTo,'HH:mm:ss')))
    const beforeTime = moment(t, "HH:mm");
const afterTime = moment(t2, "HH:mm");
    

    

             

                

const time = moment(dueTime, "HH:mm");
    

if(time.isSameOrAfter(beforeTime) && time.isSameOrBefore(afterTime))
{
                  

}