【问题标题】:How to check if current time is between certain business hours?如何检查当前时间是否在特定营业时间之间?
【发布时间】:2017-01-23 23:24:01
【问题描述】:

下面的代码是我最终希望得到的,但我不认为 momentjs 是这样工作的。

let time = moment()
let dayOfWeek = time.weekday()
let hour = time.hour()
let minutes = time.minutes()

let isBusinessHours = false

// Sunday=1, Monday=2, etc..
// Mon-Thu - 8:30am to 7:30pm

if (dayOfWeek >= 2 && dayOfWeek <= 5) {
  if ((hour >= 8 && hour <= 19) && (minutes >= 0 && minutes <= 30)) {
    isBusinessHours = true
  }
} else if (dayOfWeek == 6) { // Fri - 8:30am - 5:30pm

} else if (dayOfWeek == 7) { // Sat - 10:30am - 4:00pm

}

这似乎是一个已解决的问题,但我似乎无法破解它。

【问题讨论】:

    标签: javascript momentjs


    【解决方案1】:

    以下是使用 MomentJS 执行此操作的方法。

    let currentTime = moment()
    let opening = moment('9:30am', 'h:mma')
    let closing = moment('7:30pm', 'h:mma')
    
    if (currentTime.isAfter(opening) && currentTime.isBefore(closing)) {
      console.log("It's business time!")
    }
    

    【讨论】:

    • 有一个函数叫做isBetween所以你也可以使用currentTime.isBetween(opening, closing)
    【解决方案2】:
    // Sunday=1, Monday=2, etc..
    // Mon-Thu - 8:30am to 7:30pm
    
    if (dayOfWeek >= 2 && dayOfWeek <= 5) {
      if ((hour >= 8 && hour <= 19) && (minutes >= 0 && minutes <= 30)) {
        isBusinessHours = true
      }
    

    此代码会将上午 8:00 到上午 8:30 之间的时间计为工作时间内的时间,因为小时=8,分钟>=0 和分钟

    一个选项是在每个 if 块中设置周一至周四、周五和周六的开始和结束时间,并使用 MomentJS 的 isBefore() 和 isAfter() 方法来查看当前时间是否为工作日范围内。

    见:Comparing two times with Moment JS 和:https://momentjs.com/docs/#/query/is-before/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-07
      • 1970-01-01
      • 2016-10-23
      • 2021-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多