繁体   English   中英

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

[英]How to check the current time if it is between two times using 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

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

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

 // Opening and Closing Time data objects const openingTime = { hour: 8, minute: 00 }, closingTime = { hour: 20, minute: 00 }; // Create Moment objects const now = moment(), openToday = moment(openingTime), openYesterday = moment(openingTime).subtract(1, 'day'), closeToday = moment(closingTime), closeTomorrow = moment(closingTime).add(1, 'day'); let openForBusiness = false; if (openToday.isBefore(closeToday)) { openForBusiness = now.isBetween(openToday, closeToday); } else { openForBusiness = now.isBetween(openYesterday, closeToday) || now.isBetween(openToday, closeTomorrow); } console.log("openForBusiness:", openForBusiness); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM