Javascript momentjs中的isBetween函数未按预期运行

Javascript momentjs中的isBetween函数未按预期运行,javascript,node.js,reactjs,date,momentjs,Javascript,Node.js,Reactjs,Date,Momentjs,我使用以下函数返回了介于用户指定日期(-4)到(+2)小时之间的日期(使用用户id检索),但isBetween函数的行为与预期不符!我是新的前端编程,我很抱歉,如果答案是显而易见的 router.get('/result/:id', async (req, res) => { try { // let udate = req.params.date; const user = await match.findById(req.params.id)

我使用以下函数返回了介于用户指定日期(-4)到(+2)小时之间的日期(使用用户id检索),但isBetween函数的行为与预期不符!我是新的前端编程,我很抱歉,如果答案是显而易见的

 router.get('/result/:id', async (req, res) => {
    try {

        // let udate = req.params.date;
        const user = await match.findById(req.params.id)
        let m = moment(user.date)
        console.log(m.toString())
        m1 = m.subtract(4, 'h');
        console.log(m1);
        m = moment(user.date)
        let m2 = m.add(2, 'hours');
        console.log(m2);
        const query = await match.find()
        query.map(a => {

            if (moment(a.date).isBetween(moment(user.date).add(2, 'h'), moment(user.date).subtract(4, 'h'))) {
                console.log(moment(a.date).toString);
            }
        })
        const list = await match.find({})
        res.json(list)
    } catch (err) {
        res.send('error: ' + err)
    }
})```


[the log of this code comes to be][1]


  [1]: https://i.stack.imgur.com/YihLX.png

争论的顺序很重要

请注意,两个参数的顺序很重要:“较小”的日期 应该在第一个参数中

moment('2010-10-20').isBetween('2010-10-19', '2010-10-25'); // true
moment('2010-10-20').isBetween('2010-10-25', '2010-10-19'); // false
交换传递的参数的顺序

if (moment(a.date).isBetween(
  moment(user.date).subtract(4, 'h'),
  moment(user.date).add(2, 'h')
)) {
  console.log(moment(a.date).toString);
}

争论的顺序很重要

请注意,两个参数的顺序很重要:“较小”的日期 应该在第一个参数中

moment('2010-10-20').isBetween('2010-10-19', '2010-10-25'); // true
moment('2010-10-20').isBetween('2010-10-25', '2010-10-19'); // false
交换传递的参数的顺序

if (moment(a.date).isBetween(
  moment(user.date).subtract(4, 'h'),
  moment(user.date).add(2, 'h')
)) {
  console.log(moment(a.date).toString);
}
isBetween(m1,m2)
函数检查
m1
m2
之间的日期

试着替换

moment(a.date).isBetween(moment(user.date).加上(2,'h'),moment(user.date).减去(4,'h'))

moment(a.date).isBetween(moment(user.date).减去(4,'h'),moment(user.date).添加(2,'h'))
isBetween(m1,m2)
函数检查
m1
m2
之间的日期

试着替换

moment(a.date).isBetween(moment(user.date).加上(2,'h'),moment(user.date).减去(4,'h'))


moment(a.date).isBetween(moment(user.date).减去(4,'h'),moment(user.date).添加(2,'h'))

谢谢您的帮助。但我在询问时尝试使用$lte和$gte实现相同的功能。谢谢您的帮助。但我试图在查询时使用$lte和$gte实现相同的功能。@PurushothamParthy NP。如果这足以解决您的问题,请接受答案。是的,对不起。再次感谢。@PurushothamParthy对您的问题和此解决方案做了一些更改,以便我可以对其进行改进,以供将来的读者/参考?@PurushothamParthy NP。如果这足以解决您的问题,请接受答案。是的,对不起。再次感谢。@PurushothamParthy对您的问题和此解决方案做了一些更改,以便我可以对其进行改进,以供将来的读者/参考?