The selected answer, in fact, I can not compare them. for my project, display is not enough.
Finally, I came up with a solution that hides (NSDate) currentDate -> gregorianDate then we can compare these NSDates.
Just remember that NSDates should be used temporarily (it is not attached by any calendar)
NSDate* currentDate = [NSDate date]; NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *gregorianComponents = [gregorianCalendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:currentDate]; NSDateComponents *comps = [[NSDateComponents alloc] init]; [comps setDay:[gregorianComponents day]]; [comps setMonth:[gregorianComponents month]]; [comps setYear:[gregorianComponents year]]; [comps setHour:[gregorianComponents hour]]; [comps setMinute:[gregorianComponents minute]]; [comps setSecond:[gregorianComponents second]]; NSCalendar *currentCalendar = [NSCalendar autoupdatingCurrentCalendar]; NSDate *today = [currentCalendar dateFromComponents:comps];
source share