Узнайте, есть ли NSDate сегодня, вчера, завтра

С iOS SDK мне нужно найти простой и безопасный способ узнать, есть ли NSDate сегодня, вчера, завтра. Я ищу что-то вроде этого в псевдокоде:

NSDate *myDate = someDate;
if ([myDate isTomorrow]) {
    NSLog("Tomorrow"); 
}

Как бы вы его разрешили?

Ответ 1

Проверьте наш класс Erica Sadun класс NSDate extension: http://github.com/erica/NSDate-Extensions

Есть много сопоставлений даты, среди которых именно то, что вам нужно:)

Ответ 2

Я понимаю, что это довольно старый, но я хочу обновить ответ (поскольку я не видел, чтобы кто-то еще отправлял более актуальный ответ).

Так как iOS 8.0 у вас есть куча функций, которые вы можете использовать для сравнения даты:

  • compareDate: Todate: toUnitGranularity:
  • IsDate: equalToDate: toUnitGranularity:
  • IsDate: inSameDayAsDate:
  • isDateInToday:
  • isDateInTomorrow:
  • isDateInWeekend:
  • isDateInYesterday:

См. ниже пример:

NSDate *today = [NSDate new];
NSCalendar* calendar = [NSCalendar currentCalendar];

BOOL isToday = [calendar isDateInToday:today];
BOOL isYesterday = [calendar isDateInYesterday:today];

isTayay будет YES.

isYewterday будет НЕТ, учитывая, что мы дали ему сегодняшнюю дату.

Подробнее см. Документация для Apple.

Ответ 3

Swift 3

let isToday = Calendar.current.isDateInToday(yourDate)

Затем вы можете проверить значение и действовать соответственно просто:

if isToday {
    //If true, do this
}

Существуют аналогичные функции для завтрашних, выходных и нескольких других, например:

let isTomorrow = Calendar.current.isDateInTomorrow(yourDate)

Это руководство содержит все их в Objective-C и Swift:

введите описание изображения здесь