2017-01-03 26 views
0

私は次の問題に直面しています:現在の日付を特定の時点(曜日と時刻を指定してください)と比較する必要があります。これは:。現在の日付と特定の時刻(平日、hh:mm)を比較する

const myObj = { 
    "weekday": "Tuesday", 
    "timeOfDay": "10:30" 
} 

平日はDate.now()getDay()と平日の配列を使用して解決されるが、時間の一部を介して取得することができません。むしろ±20分の間隔で正確な一致であってはならない。

+0

[moment.js](http://momentjs.com/)を使用することをお勧めします。ライブラリはバックエンドとフロントエンド用に存在します。 –

+0

私はmomentjs(このタスクのためのフレームワーク)を避けたいと思います。なぜなら、私は、単一の機能のためにフレームワーク全体を使用するのはちょっと残念です。 –

答えて

1

を少し大ざっぱ取得する差の絶対値がより小さいかと等しい場合、私は分にmyObj.timeOfDayと現在の時刻を変換してチェックすることをお勧め例えば、

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()]); 
} 

注:​​は任意の数の先行ゼロを受け入れます。

1

問題を引き起こしているのは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... 
} 

EDIT:これは...深夜の周り

関連する問題