在我的应用程序中,我需要在一个if-else循环中比较三个日期。我有一个开始日期,结束日期和测试日期。我想检查的是测试日期是否在开始日期和结束日期之间。
if (testDate >= startDate && testDate <= endDate) {
如果我将startDate设置为25/04/2012,将endDate设置为24/04/2019,将testDate设置为25/12/2013,则代码可以正常工作。但是,如果我将startDate设置为26/04/2000并将endDate设置为24/04/2019并将testDate设置为25/12/2013,则代码不起作用。怎么了?
答案 0 :(得分:3)
你不能将Objective-C对象与C中的任何布尔运算符进行比较。你要比较它们的地址,不它们的值。
查看NSDate
类的文档,特别是-compare:
方法。
答案 1 :(得分:2)
日期可以这样比较。但是,您必须先调用timeIntervalSince1970
将日期转换为整数类型值。在这种情况下,它会为您提供类型NSTimeInterval
的数值。
另一个选项是使用compare:
对象上调用的NSDate
方法。
在这种情况下,将一个日期与另一个日期进行比较将得到类引用中详述的结果,如下所示:
接收者和另一个日子完全相同, NSOrderedSame
接收者的时间晚于anotherDate,NSOrderedDescending
接收者的时间早于另一个日期,NSOrderedAscending。