2017-01-03 6 views
0

저는 다음과 같은 문제에 직면하고 있습니다 : 현재 날짜를 특정 시간대와 비교해야합니다. 이는 :.현재 날짜를 특정 시간 (평일, hh : mm)과 비교하십시오.

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

요일은 Date.now() getDay() 평일의 배열로 해결되지만, 시간 부분을 통과 할 수 없다. 오히려 ± 20 분 간격으로 정확히 일치 시켜서는 안됩니다.

+0

[moment.js] (http://momentjs.com/)를 사용하는 것이 좋습니다. 라이브러리는 백엔드 및 프론트 엔드에 존재합니다. –

+0

나는 하나의 함수에 대해 전체 프레임 워크를 사용하기에는 과도한 느낌이 들기 때문에 momentj (이 작업을위한 모든 프레임 워크)는 피하고 싶습니다. –

답변

1

나는 차의 절대 값이보다 덜거나 같으면 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() 앞에 0의 숫자를 받아들입니다.

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... 
} 

편집 :이