Objective c 无法比较两个日期

Objective c 无法比较两个日期,objective-c,ios,nsdate,Objective C,Ios,Nsdate,困惑在这里。。。我有两个日期可以登录到控制台并获取: 日期是2011-03-30 13:33:57+0000-2011-03-28 13:33:57+0000 一个日期明显比另一个日期晚。。。但是,在下面的代码中,使用[dateUSERPREFS laterDate:dateXML]或[dateUSERPREFS earlierDate:dateXML]并不重要,如果在控制台中显示,我得到我们首先得到的是什么 有什么想法吗?谢谢 NSDate *dateXML = [df dateFromStr

困惑在这里。。。我有两个日期可以登录到控制台并获取: 日期是2011-03-30 13:33:57+0000-2011-03-28 13:33:57+0000

一个日期明显比另一个日期晚。。。但是,在下面的代码中,使用[dateUSERPREFS laterDate:dateXML]或[dateUSERPREFS earlierDate:dateXML]并不重要,如果在控制台中显示,我得到我们首先得到的是什么

有什么想法吗?谢谢

NSDate *dateXML = [df dateFromString:last_modifiedXML];
NSDate *dateUSERPREFS = [df dateFromString:last_modifiedUSERPREFS];

NSLog(@"dates are %@ - %@", dateXML, dateUSERPREFS);

if ([dateUSERPREFS laterDate:dateXML]) {        
    NSLog(@"we get first IF");
}
[aDate laterDate:anotherDate]返回NSDate,而不是BOOL。具体来说,它返回两个日期中较晚的一个

您想使用compare:代替:

或者,您可以使用[dateUSERPREFS timeIntervalSinceDate:dateXML],它提供从dateXML到dateUSERPREFS的签名秒数

我会做以下操作:从另一个日期中减去一个日期,然后检查该值是否大于或小于零。这会告诉你哪个更大:

if ([dateXML timeIntervalSinceDate:dateUSERPREFS] > 0) {
    //Now you know that dateXML is larger than dateUSERPREFS
}
-[NSDate laterDate:]返回NSDate*而不是BOOL,并且该值不会为空,因此该条件始终为真

请尝试-[NSDate compare:],其签名为:

- (NSComparisonResult)compare:(NSDate *)anotherDate
然后,您可以比较if条件下的代码,我相信这是您试图用问题中的代码实现的


当然,您可以继续使用laterDate:并将相等性与原始对象进行比较,但我觉得compare:有助于实现更直观的逻辑。或者timeIntervalSinceDate:如果接收器更早,则以秒为单位为负数。非常感谢。但是如果这两个日期相等呢?
- (NSComparisonResult)compare:(NSDate *)anotherDate