Objective C 如何比较两个 date_time 对第二个值的无知

Objective C how to compare two date_time with the ignorance on second value

实际上我们想比较这种格式的 NSDate "yyyy-MM-dd HH:mm",那么我们如何比较日期、小时和分钟的两个 date_time 值并忽略 [=16] 中的第二个值=], ios ?

如今,最好的方法可能是使用 -[NSCalendar isDate:equalToDate:toUnitGranularity:]

BOOL datesAreEqual = [[NSCalendar currentCalendar] isDate:date1
    equalToDate:date2 toUnitGranularity:NSCalendarUnitMinute];

要比较它们(找出哪个更多 recent/late),请改用 -[NSCalendar compareDate:toDate:toUnitGranularity:]

NSCalendar 有一个非常方便的方法来比较受特定单位限制的日期。将 toUnitGranularity 参数设置为 NSCalendarUnitMinute 并忽略秒数。

NSDate *date1 = [NSDate date];
NSDate *date2 = [date1 dateByAddingTimeInterval:30.0];
NSComparisonResult compareDateIgnoringSeconds = [[NSCalendar currentCalendar]        
                                                compareDate:date1 
                                                     toDate:date2 
                                          toUnitGranularity:NSCalendarUnitMinute];
NSLog(@"%@, %@, %ld", date1, date2, compareDateIgnoringSeconds);

结果为NSOrderedSame相等,NSOrderedAscendingNSOrderedDescendingdate1之前date2date1之后date2 ]