2013-04-14 4 views
0

날짜가 특정 날짜 범위 내에 있는지 알아 보는 가장 좋은 방법은 무엇입니까? 지금은이 권리를하고있는 중이 야 :날짜가 날짜 범위 내에 있는지 확인하십시오.

if (([rangeStart compare:userEnteredDate] == NSOrderedAscending) && ([rangeEnd compare:userEnteredDate] == NSOrderedDescending) 

위의 코드 유일한 문제는하는 rangeStart 날짜와 userEnteredDate가 동일한 경우에는 if 문이 나에게 알 수없는 몇 가지 이유 "false"를 얻을 것입니다. 누구나 왜 그런 아이디어가 있니?

userEnteredDate가 rangeStart 및 rangeEnd 내에 있는지 확인하는 더 좋은 방법이 있습니까?

답변

0

같은 것을 사용하지만, 나는이 시도

if (([rangeStart compare:userEnteredDate] == NSOrderedAscending || 
    [rangeStart compare:userEnteredDate] == NSOrderedSame) && 
    ([rangeEnd compare:userEnteredDate] == NSOrderedDescending || 
     [rangeEnd compare:userEnteredDate] == NSOrderedSame)) 
+0

비교가 NSOrderedAscending 또는 NSOrderedSame과 같은지 확인하는 것이 NSOrderedDescending이 아닌지 확인하는 것과 같으면 간단하게 할 수 있습니다. 같은 개념이 다른 비교에 적용됩니다. 더 간단한 방법은 내 대답 아래에 주어집니다. –

+0

네 말이 맞아. 그러나 비교가'[rangeStart compare : userEnteredDate]'와'[rangeStart compare : userEnteredDate]'가 아니어야합니까? – ssantos

+0

나는 오름차순과 데스 팅을 당신의 것으로 바꿨다.) –

2

이유는 rangeStartuserEnteredDate 동일한 경우, 귀하의 부울 식의 첫번째 덩어리가 참 거짓

NSOrderedSame == NSOrderedAscending 

로 평가하는 것입니다.

나는, 순서를 재 배열하고보다 정직 방법이 있는지 알고하지 마십시오

if (([userEnteredDate compare:rangeStart] != NSOrderedDescending) 
    && ([userEnteredDate compare:rangeEnd] != NSOrderedAscending)) { 
    //... 
} 
+0

이 하나 라구 .-해야 것 그러나 그것은 여전히 ​​효과가 없었습니다. 회신 주셔서 감사합니다. –

+0

"작동하지 않았습니다"는별로 도움이되지 않습니다. 무슨 문제 였어? –

+0

userEnteredDate가 rangeStart와 같으면 if 문이 false라는 것이 문제였습니다. 이것은 위의 코드로 보입니다. 귀하의 회신은 다소 도움이되었지만 그것이 효과가없는 이유를 언급했기 때문에 도움이되었습니다. 그래서 나는 당신의 대답을 유용하다고 표시했습니다. –

관련 문제