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 關注
- 855 瀏覽
添加回答
舉報