可以在不使用日历组件的情况下比较NSDate对象吗?

ndo*_*min 1 nsdate ios

我希望NSDate仅根据当天比较对象(忽略时间).而不是将时间转换为0:00:00,或使用NSDateComponent大多数解决方案(例如,比较两个NSDates并忽略时间组件)

有没有人看到将日期转换为int代表自1970年以来使用该timeIntervalSince1970方法的天数的问题?

return (int)([date timeIntervalSince1970]/(SECONDS_PER_DAY));
Run Code Online (Sandbox Code Playgroud)

Noa*_*oon 5

是的,一点没错.日期数学有无穷无尽的陷阱.使用NSDateComponents; 他们并不难.

NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents *date1Components = [cal components:NSEraCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:date1];
NSDateComponents *date2Components = [cal components:NSEraCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:date2];
NSComparisonResult comparison = [[cal dateFromComponents:date1Components] compare:[cal dateFromComponents:date2Components];
Run Code Online (Sandbox Code Playgroud)