NSDate 比今天旧
NSDate is older than today
我知道如何比较两个 NSDate
对象,例如:
if ([olderDate compare:[NSDate date]] == NSOrderedAscending) {
// do something
}
但是我只想比较日期部分,而不是时间,因为在我的情况下时间会使比较不准确。
是否可以只比较日月年?
您可以通过这种方式获取日期组件
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:yourDate];
那你可以比较一下
NSInteger day = [components day];
NSInteger month = [components month];
NSInteger year = [components year];
你可以使用这个方法。
if ([olderDate timeIntervalSinceNow] > 0) {
// do something
}
自 iOS 8 起,NSCalendar
有许多用于此类比较的便捷方法。
例如,有:
- (NSDate *)startOfDayForDate:(NSDate *)date NS_AVAILABLE(10_9, 8_0);
您可以从某个日期(例如 [NSDate date]
对应 "now")获取给定日期的开始时间,然后与该日期进行比较。
还有:
- (NSComparisonResult)compareDate:(NSDate *)date1 toDate:(NSDate *)date2 toUnitGranularity:(NSCalendarUnit)unit NS_AVAILABLE(10_9, 8_0);
您可以调用粒度 NSCalendarUnitDay
直接进行您想要的比较。
还有其他人。有关详细信息,请参阅 NSCalendar.h,因为这些方法似乎还没有出现在 class 参考文档中。
我知道如何比较两个 NSDate
对象,例如:
if ([olderDate compare:[NSDate date]] == NSOrderedAscending) {
// do something
}
但是我只想比较日期部分,而不是时间,因为在我的情况下时间会使比较不准确。
是否可以只比较日月年?
您可以通过这种方式获取日期组件
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:yourDate];
那你可以比较一下
NSInteger day = [components day];
NSInteger month = [components month];
NSInteger year = [components year];
你可以使用这个方法。
if ([olderDate timeIntervalSinceNow] > 0) {
// do something
}
自 iOS 8 起,NSCalendar
有许多用于此类比较的便捷方法。
例如,有:
- (NSDate *)startOfDayForDate:(NSDate *)date NS_AVAILABLE(10_9, 8_0);
您可以从某个日期(例如 [NSDate date]
对应 "now")获取给定日期的开始时间,然后与该日期进行比较。
还有:
- (NSComparisonResult)compareDate:(NSDate *)date1 toDate:(NSDate *)date2 toUnitGranularity:(NSCalendarUnit)unit NS_AVAILABLE(10_9, 8_0);
您可以调用粒度 NSCalendarUnitDay
直接进行您想要的比较。
还有其他人。有关详细信息,请参阅 NSCalendar.h,因为这些方法似乎还没有出现在 class 参考文档中。