将当前日期与某个时间点(工作日,hh:mm)进行比较
Compare current date to a certain point of time (weekday, hh:mm)
我面临以下问题:我必须将当前日期与给定工作日和时间的特定时间点进行比较,就像这样:
const myObj = {
"weekday": "Tuesday",
"timeOfDay": "10:30"
}
工作日用Date.now().getDay()和工作日数组解决,但是时间部分搞不定。它不应该是精确匹配,而是 ± 20 分钟的间隔。
我猜是 20 分钟 window 导致了这个问题?
var timeSplit = myObj.timeOfDay.split(':');
var totalMins = parseInt(timeSplit[0]) * 60 + parseInt(timeSplit[1]);
if(Math.abs(totalMins - (Date.now().getHours() * 60 + Date.now().getMinutes())) < 21) {
// got a hit...
}
编辑:这将在午夜左右变得有点粗略...
我建议将 myObj.timeOfDay
和当前时间转换为分钟,并检查差值的绝对值是否小于或等于 20,例如:
var weekdays = ['Sunday', 'Monday', 'Tuesday',
'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var now = new Date();
if (myObj.weekday === weekdays[now.getDay()]) {
var time = myObj.timeOfDay.split(':');
var minutes = Number(time[0]) * 60 + Number(time[1]);
var nowMinutes = now.getHours() * 60 + now.getMinutes();
console.log(Math.abs(nowMinutes - minutes) <= 20);
} else {
console.log(myObj.weekday, '!==', weekdays[now.getDay()]);
}
注意,Number()
接受任意数量的前导零。
我面临以下问题:我必须将当前日期与给定工作日和时间的特定时间点进行比较,就像这样:
const myObj = {
"weekday": "Tuesday",
"timeOfDay": "10:30"
}
工作日用Date.now().getDay()和工作日数组解决,但是时间部分搞不定。它不应该是精确匹配,而是 ± 20 分钟的间隔。
我猜是 20 分钟 window 导致了这个问题?
var timeSplit = myObj.timeOfDay.split(':');
var totalMins = parseInt(timeSplit[0]) * 60 + parseInt(timeSplit[1]);
if(Math.abs(totalMins - (Date.now().getHours() * 60 + Date.now().getMinutes())) < 21) {
// got a hit...
}
编辑:这将在午夜左右变得有点粗略...
我建议将 myObj.timeOfDay
和当前时间转换为分钟,并检查差值的绝对值是否小于或等于 20,例如:
var weekdays = ['Sunday', 'Monday', 'Tuesday',
'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var now = new Date();
if (myObj.weekday === weekdays[now.getDay()]) {
var time = myObj.timeOfDay.split(':');
var minutes = Number(time[0]) * 60 + Number(time[1]);
var nowMinutes = now.getHours() * 60 + now.getMinutes();
console.log(Math.abs(nowMinutes - minutes) <= 20);
} else {
console.log(myObj.weekday, '!==', weekdays[now.getDay()]);
}
注意,Number()
接受任意数量的前导零。