UIDate比较两个日期

时间:2013-02-05 21:40:12

标签: ios objective-c cocoa-touch

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

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");.为什么是这样?

2 个答案:

答案 0 :(得分:2)

由于-compare:对NSDate实例的作用。 docs说:

  

如果:

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

在这种情况下,接收方为DateanotherDatedt1Date的时间晚于dt1,因此您获得了NSOrderedDescending。 (这实际上就是你的日志声明所暗示的情况;我对于混淆在哪里我有点不确定。)

答案 1 :(得分:0)

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

  

如果:

     
      
  • 接收者和另一个日子完全相同,NSOrderedSame
  •   
  • 接收器的时间晚于anotherDate, NSOrderedDescending
  •   
  • 接收者的时间早于另一个日期,NSOrderedAscending。
  •