我正在以这种方式比较两个日期:
NSDateFormatter *df= [[NSDateFormatter alloc] init];
[df setDateFormat:@" dd : MM : yyyy"];
NSDate *dt1 = [[NSDate alloc] init];
dt1=[df dateFromString:TheDate];
NSDate *Date=[NSDate date];
NSLog (@"DATE CURRENT: %@ DATE 2 %@", Date, dt1);
if ([Date compare:dt1] == NSOrderedDescending) {
NSLog(@"Date is later than date2");
} else if ([Date compare:dt1] == NSOrderedAscending) {
NSLog(@"Date is earlier than date2");
[postsToBeDeleted addObject: textmessage];
} else {
NSLog(@"dates are the same");
}
NSLog给了我:
DATE CURRENT: 2013-02-05 21:37:54 +0000 DATE 2 2012-01-04 23:00:00 +0000
但绝对清楚的是,当前日期远远超过dt1日期,我仍然得到NSLog(@"日期晚于date2");.为什么是这样?
答案 0 :(得分:2)
由于-compare:
对NSDate实例的作用。 docs说:
如果:
- 接收者和另一个日子完全相同,NSOrderedSame
- 接收者的时间晚于anotherDate,NSOrderedDescending
- 接收者的时间早于另一个日期,NSOrderedAscending。
在这种情况下,接收方为Date
,anotherDate
为dt1
。 Date
的时间晚于dt1
,因此您获得了NSOrderedDescending
。 (这实际上就是你的日志声明所暗示的情况;我对于混淆在哪里我有点不确定。)
答案 1 :(得分:0)
请让我引用一些有趣的事情:
如果:
- 接收者和另一个日子完全相同,NSOrderedSame
- 接收器的时间晚于anotherDate, NSOrderedDescending
- 接收者的时间早于另一个日期,NSOrderedAscending。