3 回答
TA贡献1871条经验 获得超13个赞
在进行比较之前,您将日期中的时间设置为00:00:00:
unsigned int flags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents* components = [calendar components:flags fromDate:date];
NSDate* dateOnly = [calendar dateFromComponents:components];
// ... necessary cleanup
TA贡献1848条经验 获得超6个赞
令我惊讶的是,没有其他答案可以使用此选项来获取对象的“开始日期”日期:
[[NSCalendar currentCalendar] rangeOfUnit:NSCalendarUnitDay startDate:&date1 interval:NULL forDate:date1];
[[NSCalendar currentCalendar] rangeOfUnit:NSCalendarUnitDay startDate:&date2 interval:NULL forDate:date2];
哪个设置date1并date2开始各自的日子。如果它们相等,则它们在同一天。
或此选项:
NSUInteger day1 = [[NSCalendar currentCalendar] ordinalityOfUnit:NSDayCalendarUnit inUnit: forDate:date1];
NSUInteger day2 = [[NSCalendar currentCalendar] ordinalityOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitEra forDate:date2];
其中规定day1,并day2以可以比较有点武断值。如果它们相等,则它们在同一天。
TA贡献1797条经验 获得超4个赞
iOS 8向NSCalendar引入了一种新方法,使此操作变得更加容易。
- (NSComparisonResult)compareDate:(NSDate *)date1 toDate:(NSDate *)date2 toUnitGranularity:(NSCalendarUnit)unit NS_AVAILABLE(10_9, 8_0);
您可以将粒度设置为重要的单位。这将忽略所有其他单位,并将比较范围限制为所选单位。
- 3 回答
- 0 关注
- 809 浏览
添加回答
举报