2013-02-13 45 views
0

我有一个2 NSDates,一个startdateenddate。这些日期有以下格式。比较NSDates在objective-c

startDate = 2013-02-22 12:00:00 +0000; endDate = 2013-02-25 13:00:00 +0000; 

现在我想比较这些日期。所以我有这个代码。

if([event.startDate isEqualToDate:event.endDate]){ 
    NSLog(@"event %@ is in the same day",event.title); 
}else{ 
    NSLog(@"event %@ is NOT in the same day",event.title); 
} 

但问题是它总是在else语句中。我希望如果startDate和endDate在同一天,每月和每年他们给我第一个NSLog否则他们给我第二个NSLog

任何帮助?

+1

取下日期时间元素:http://stackoverflow.com/questions/3916392/removing-time-components-from-an-nsdate-object-using-objective-c-cocoa – trojanfoe 2013-02-13 08:23:11

+0

你是使用NSDateFormatter将字符串转换为日期? – 2013-02-13 08:28:24

回答

1

试试这个:

if ([event.startDate compare:event.endDate]==NSOrderedSame) 
{ 
    // The same 
} 
else 
{ 
    // Not the same 
} 

编辑: 而现在,我已经注意到(@ trojanfoe的正确评论):确保时间等于过,或者只是将其从您的NSDate对象中移除。

+0

isEqualToDate:方法检测日期之间的亚秒差异。如果您想比较不太精细的日期,请使用timeIntervalSinceDate:比较两个日期。 – Mrunal 2013-02-13 08:35:48

0
NSCalendar *calendar = [NSCalendar currentCalendar]; 
    NSDateComponents *startDateComponents = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:startDate]; 
    NSDateComponents *endDateComponents = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:endDate]; 
    NSDate *startDate = [calendar dateFromComponents:startDateComponents]; 
    NSDate *endDate = [calendar dateFromComponents:endDateComponents]; 

    if([startDate isEqualToDate:endDate]) 
    { 
     NSLog(@"event %@ is in the same day",event.title); 
    } 
    else{ 
     NSLog(@"event %@ is NOT in the same day",event.title); 
    }