比较日期

时间:2012-04-27 17:07:57

标签: objective-c cocoa-touch if-statement nsdate

在我的应用程序中,我需要在一个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,则代码不起作用。怎么了?

2 个答案:

答案 0 :(得分:3)

你不能将Objective-C对象与C中的任何布尔运算符进行比较。你要比较它们的地址,它们的值。

查看NSDate类的文档,特别是-compare:方法。

答案 1 :(得分:2)

日期可以这样比较。但是,您必须先调用timeIntervalSince1970将日期转换为整数类型值。在这种情况下,它会为您提供类型NSTimeInterval的数值。

另一个选项是使用compare:对象上调用的NSDate方法。

在这种情况下,将一个日期与另一个日期进行比较将得到类引用中详述的结果,如下所示:

  • 接收者和另一个日子完全相同, NSOrderedSame

  • 接收者的时间晚于anotherDate,NSOrderedDescending

  • 接收者的时间早于另一个日期,NSOrderedAscending。