我現在面臨的以下問題:我有比較當前日期的特定時間點,在給定時間和工作日,不知何故像此:比較當前日期到某一時間點(平日,HH:MM)
const myObj = {
"weekday": "Tuesday",
"timeOfDay": "10:30"
}
的平日解決與Date.now()getDay()和平日的陣列,但通過在部分時間不能得到。它不應該是精確匹配,而應該是±20分鐘的時間間隔。
我現在面臨的以下問題:我有比較當前日期的特定時間點,在給定時間和工作日,不知何故像此:比較當前日期到某一時間點(平日,HH:MM)
const myObj = {
"weekday": "Tuesday",
"timeOfDay": "10:30"
}
的平日解決與Date.now()getDay()和平日的陣列,但通過在部分時間不能得到。它不應該是精確匹配,而應該是±20分鐘的時間間隔。
我建議轉換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()]);
}
注意,接受任意數量的前導零。
我猜這是導致問題的20分鐘窗口?
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...
}
編輯:這將讓午夜有點粗略...
我建議你使用[moment.js](http://momentjs.com/)。該庫存在後端和前端。 –
我想避免使用任何框架(這個任務的任何框架),因爲我覺得使用一個單一函數的整個框架有點矯枉過正。 –