查明某个日期是否在特定日期范围内的最佳方法是什么?我现在正在这样做:
if (([rangeStart compare:userEnteredDate] == NSOrderedAscending) && ([rangeEnd compare:userEnteredDate] == NSOrderedDescending)
上述代码的唯一问题是,如果rangeStart日期和userEnteredDate相同,if语句将因某些我不知道的原因而产生“false”。任何人都有任何想法?
有没有更好的方法来检查userEnteredDate是否属于rangeStart和rangeEnd?
答案 0 :(得分:2)
原因是如果rangeStart
等于userEnteredDate
,则布尔表达式的第一个块将评估为
NSOrderedSame == NSOrderedAscending
这确实是假的。
我会重新排列顺序并使用类似
的内容if (([userEnteredDate compare:rangeStart] != NSOrderedDescending)
&& ([userEnteredDate compare:rangeEnd] != NSOrderedAscending)) {
//...
}
答案 1 :(得分:0)
不知道是否有更直接的方式,但这个应该有用.-
if (([rangeStart compare:userEnteredDate] == NSOrderedAscending ||
[rangeStart compare:userEnteredDate] == NSOrderedSame) &&
([rangeEnd compare:userEnteredDate] == NSOrderedDescending ||
[rangeEnd compare:userEnteredDate] == NSOrderedSame))