如何使用momentjs检查当前时间是否介于两次之间?

时间:2019-05-17 20:33:36

标签: javascript momentjs

  

这个问题之前被问过几次,但是我被卡住了!

我想做什么

    let now = moment().format('LT'); // 11:28 PM
    let close = moment('2019-04-26T22:00:18.000Z').format('LT'); // 1:00 AM
    let open = moment('2019-04-26T13:00:32.000Z').format('LT'); // 4:00 PM
    console.log(moment(now).isBetween(moment(open), moment(close))); // always return false
    console.log(moment(now).isBetween(moment(open), moment(close), "hour")); // always return false
    console.log(moment(now).isBetween(open, close, "hour")); // always return false
    console.log(moment(now).isBetween(open, close)); // always return false

知道我为什么总是虚假吗?

1 个答案:

答案 0 :(得分:0)

如果只想比较时间,则可以在某个小时和分钟创建一个矩对象,其他设置将默认为今天。调用.format将返回一个字符串,但不会修改调用对象。您的代码正在将今天的日期和时间与另一天的时间进行比较,因此始终是错误的。同样,也无需在另一个对Moment的调用中包装一下矩对象。

let now = moment();
let open = moment({ hour:8, minute:00 });
let close = moment({ hour:20, minute:00 });
console.log( "now:", now.format( 'LT' ) );
console.log( "open", open.format( 'LT' ) );
console.log( "close", close.format( 'LT' ) );
console.log( "close <= now <= close:", now.isBetween(open, close) );
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>