如何检查当前时间是否在某些工作时间之间?

时间:2017-01-23 23:24:01

标签: javascript 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

}

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

2 个答案:

答案 0 :(得分:2)

以下是使用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!")
}

答案 1 :(得分:0)

// 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,分钟&gt; = 0且分钟&lt; = 30。

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

请参阅:Comparing two times with Moment JS 并且:https://momentjs.com/docs/#/query/is-before/