检查日期是否在日期范围内

时间:2013-04-14 00:02:54

标签: ios objective-c nsdate

查明某个日期是否在特定日期范围内的最佳方法是什么?我现在正在这样做:

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

上述代码的唯一问题是,如果rangeStart日期和userEnteredDate相同,if语句将因某些我不知道的原因而产生“false”。任何人都有任何想法?

有没有更好的方法来检查userEnteredDate是否属于rangeStart和rangeEnd?

2 个答案:

答案 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))