-1

我以这种方式比较两个日期:

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(@"Date is later than date2");。为什么是这样?

4

2 回答 2

2

因为-compare:NSDate 实例的工作方式。文档说:

如果:

  • 接收者和anotherDate完全相等,NSOrderedSame
  • 接收者在时间上晚于另一个日期,NSOrderedDescending
  • 接收者在时间上早于另一个日期,NSOrderedAscending。

在这种情况下,接收者是Date,并且anotherDate是您的dt1Date是晚于时间比dt1,所以你得到NSOrderedDescending。(这实际上是您的日志语句所暗示的情况;我有点不确定混乱在哪里。)

于 2013-02-05T21:44:52.353 回答
0

请让我引用一些有趣的事情:

如果:

  • 接收者和anotherDate完全相等,NSOrderedSame
  • 接收者在时间上晚于另一个日期,NSOrderedDescending
  • 接收者在时间上早于另一个日期,NSOrderedAscending。
于 2013-02-05T21:49:06.460 回答