Вы можете сравнить компоненты даты:
NSDateComponents *otherDay = [[NSCalendar currentCalendar] components:NSCalendarUnitEra | NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:aDate];
NSDateComponents *today = [[NSCalendar currentCalendar] components:NSCalendarUnitEra | NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:[NSDate date]];
if([today day] == [otherDay day] &&
[today month] == [otherDay month] &&
[today year] == [otherDay year] &&
[today era] == [otherDay era]) {
//do stuff
}
Edit:
Мне больше нравится метод Стефана, я думаю, он делает более понятным и понятным утверждение if:
NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents *components = [cal components:(NSCalendarUnitEra | NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:[NSDate date]];
NSDate *today = [cal dateFromComponents:components];
components = [cal components:(NSCalendarUnitEra | NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:aDate];
NSDate *otherDate = [cal dateFromComponents:components];
if([today isEqualToDate:otherDate]) {
//do stuff
}
Крис, я включил ваше предложение. Мне пришлось посмотреть, какая была эпоха, поэтому для тех, кто не знает, она различает BC и AD. Это, вероятно, не нужно для большинства людей, но это легко проверить и добавить определенность, поэтому я включил его. Если вы идете на скорости, это, вероятно, не очень хороший метод в любом случае.
ПРИМЕЧАНИЕ Как и во многих ответах по SO, через 7 лет это полностью устарело. В Swift сейчас просто используйте .isDateInToday