2017-01-23 139 views
1

下面的代码是我最终想要结束的,但我不认为这就是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

这里是你如何可以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

非常明确的例子。 +1 –

+0

有一个名为'isBetween'的函数,所以你也可以使用'currentTime.isBetween(opening,closing)'' –

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,分钟> = 0和分钟< = 30。

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

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

相关问题