2013-09-30 3 views
0

연령 변수에 하나의 변수가 있고 연령 범위에 다른 변수가 있다고 가정 해 보겠습니다. 사이에 검색 날짜를 계산하기 위해 이미이 스크립트를 프로그래밍했지만 올바른 시작/종료 날짜를 항상 계산하지는 않습니다.JavaScript : 연령 기반 날짜 범위 만들기

  • 나는 30 세와 범위를 0으로 사용하는 경우, 그것은 제대로 작동 (나이 30 사람이있다).
  • 내가 나이 (31)와 범위 (1)로 사용하는 경우 제대로 작동 (나이 30 사람 있다).
  • 나는 30 세 및 범위 1로 사용하는 경우, 그것은 제대로 작동 (나이 30 사람이있다).
  • 나는 30 세 및 범위 (5)로 사용하는 경우, 그것은 제대로 작동 (나이 30 사람이있다). 나는 29 세의 나이 및 범위 1로 사용하는 경우
  • , 작동하지 않습니다 제대로 (가 아니라 30 세와 사람).

그래서 내가 발견하지 않습니다 종료 날짜에 오류가있는 것 같습니다?

나는 29 세의 나이 및 범위 1로 사용하는 경우
if (ageRange && (ageRange < 0 || ageRange > 20)) { 
    ageRange = 10; 
} 
if (age && age >= 18 && age <= 100) { 
    var now = new Date(); 
    var now2 = new Date(); 

    var startDate = new Date(now.setFullYear(now.getFullYear() - (age - ageRange))); 
    startDate.setHours(23); 
    startDate.setMinutes(59); 
    startDate.setSeconds(59); 

    var endDate = new Date(now2.setFullYear(now2.getFullYear() - (age + ageRange))); 
    endDate.setHours(0); 
    endDate.setMinutes(0); 
    endDate.setSeconds(0); 

    var findBirthObject = { $lte: startDate, $gte: endDate }; 
    if (ageRange == 0) { 
     startDate = new Date(startDate.valueOf() + 1000); 
     startDate.setFullYear(startDate.getFullYear() - 1); 

     findBirthObject = { $gte: startDate, $lte: endDate }; 
    } 

} 
+0

'0'또는 '1'과 비교할 때는 항상 "==="을 사용하십시오. 생일을 검색하는 마크 업은 어디에 있습니까? – DevlshOne

답변

0

, 그것이 제대로 작동하지 않습니다 (이 아니라 30 세 가진 사람) : 여기 내 스크립트입니다.

이 범위 검사 유형에는 modulus arithmetic을 사용하십시오. 예 :

function ageCheck(age, ageRange) 
    { 
    if (age % 29 <= ageRange) { 
    return "In range" 
    } 

    else if (age % 29 === 29 - ageRange) { 
    return "In range" 
    } 

    else { 
    return "Out of range" 
    } 
} 

ageCheck(27,1) 
ageCheck(28,1) 
ageCheck(29,1) 
ageCheck(30,1) 
ageCheck(31,1) 
ageCheck(32,1)