我有呼叫中心,我用这个JS代码让消息在营业时间和营业时间/周末后,它显示一条消息说,是支持时间之外,我的问题是,我如何使这个代码工作也为假期?
exports.handler = async function(context, event, callback) {
const moment = require('moment-timezone');
var now = moment().tz('America/New_York');
console.log('Current time-->'+now);
console.log('current hours-->'+now.hour());
let isWorkingHours = false;
//let isWorkingHours = true; // testing
const weekday = now.isoWeekday();
console.log('weekday-->'+weekday);
if (now.hour() >= 9 && now.hour() <= 17 && weekday <= 5) {
//if (now.hour() >= 4 && now.hour() <= 20 && weekday <= 2) { // testing
isWorkingHours = true;
//Console.log('This is outside working hours');
}
callback(null, {
isWorkingHours: isWorkingHours
});
}
字符串
4条答案
按热度按时间mzsu5hc01#
我从别人在StackOverflow上的帖子中得到了这个假期检查器(我应该记录下这个链接,但我忘记了)。你可以浏览所有你感兴趣的日期来创建一个完整的假期列表,或者只是检查给定的日期是否是假期
字符串
t9eec4r02#
用于检查特定时刻是否在我们的工作时间之外的逻辑在if语句中。
我会根据假期或休息日的时间范围将其抽象到某种存储中,你可以用一个表或缓存来存储这些假期(你应该提前加载它们)。
这样,你就可以做这样的事情:
1.搜索是否有日期与当前日期匹配的假日(仅匹配日期而不匹配时间戳,您可以使用moment's isSame仅按日期检查)
1.如果有匹配项,则将isWorkingHours返回为false
要检查日期是否匹配,您可以使用此方法(无论当前时间如何,当您在日期级别进行比较时,它都会返回true):
字符串
dl5txlt93#
以下是您可能需要检查的事项列表:
字符串
你可以简单地在if语句中调用这个函数。
“可变日期”假期有一个相当长的(和无聊的)实施做,这取决于你在你的国家办事处。
dba5bblo4#
这就是我如何检查美国假期时,我需要与日期和时间周围的混乱。
首先,我创建了一个
getToday()
函数,所有其他函数都是从这个函数派生的。这使得它基于我所在的当前日期而动态变化。代码注解有点重,以确保我解释了每个函数中的逻辑。我已经测试了所有11个功能,包括闰年支持。希望这对你有帮助。
字符串