在NSOrderedAscending和NSOrderedDescending的特定范围内的date

我有这个代码:

NSComparisonResult compareStart = [firstDate compare: dateSelected]; NSComparisonResult compareEnd = [secondDate compare: dateSelected]; if (((compareStart == NSOrderedAscending) || (compareStart == NSOrderedSame)) && (compareEnd == NSOrderedDescending)) 

但它不进入“如果”当firstDate = dateSelected或secondDate = dateSelected …为什么?

你确定当firstDate等于dateSelected时,select的date早于secondDate吗? 目前你的逻辑是:firstDate <= dateSelected <secondDate。 如果你想要firstDate <= dateSelected <= secondDate,那么你需要实现的代码如下:

 NSComparisonResult compareStart = [firstDate compare: dateSelected]; NSComparisonResult compareEnd = [secondDate compare: dateSelected]; if ( (compareStart == NSOrderedAscending || compareStart == NSOrderedSame) && (compareEnd == NSOrderedDescending || compareEnd == NSOrderedSame)) { // some code } 

更新:

要比较两个NSDate而不依赖于时间,请参阅: 比较两个NSDates并忽略时间分量