0

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

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

上述代码的唯一问题是,如果 rangeStart 日期和 userEnteredDate 相同,则 if 语句会因我不知道的某种原因产生“假”。任何人有任何想法为什么?

有没有更好的方法来检查 userEnteredDate 是否在 rangeStart 和 rangeEnd 范围内?

4

2 回答 2

2

原因是如果rangeStart等于userEnteredDate,则布尔表达式的第一块将计算为

NSOrderedSame == NSOrderedAscending

这确实是错误的。

我会重新排列顺序并使用类似的东西

if (([userEnteredDate compare:rangeStart] != NSOrderedDescending)
     && ([userEnteredDate compare:rangeEnd] != NSOrderedAscending)) {
   //... 
}
于 2013-04-14T00:10:23.547 回答
0

不知道是否有更直接的方法,但这应该可行。-

if (([rangeStart compare:userEnteredDate] == NSOrderedAscending || 
     [rangeStart compare:userEnteredDate] == NSOrderedSame) && 
     ([rangeEnd compare:userEnteredDate] == NSOrderedDescending ||
      [rangeEnd compare:userEnteredDate] == NSOrderedSame))
于 2013-04-14T00:11:05.150 回答