这个问题之前被问过几次,但是我被卡住了!
我想做什么
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
知道我为什么总是虚假吗?
答案 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>