2010-10-29 5 views
14

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

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

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

+0

возможно дубликат [Сравнить NSDate на сегодня или вчера] (http://stackoverflow.com/questions/2893835/compare-nsdate-for-today-or-yesterday) –

ответ

33

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

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

+0

Обнаруженные после игры с это немного, что, похоже, есть некоторые проблемы, например, с летним днем ​​также dateBysubstractingDays не работает. Это отличное расширение, но не всегда безопасное. – mrrmatinsi

+1

Для тех, кто будет читать комментарии: проект уже обновлен несколько раз, поэтому не волнуйтесь, все должно работать нормально. – Nekto

+2

Код Эрики был * точно *, что я искал, и отличную полезную категорию для NSDate.Настоятельно рекомендуется. –

36

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

С прошивкой 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]; 

isToday будет ДА.

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

См. Apple's Documentation для дальнейшего ознакомления.

3

Swift 3

let isToday = Calendar.current.isDateInToday(yourDate) 

Вы можете проверить значение и действовать соответствующим образом с просто:

if isToday { 
    //If true, do this 
} 

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

let isTomorrow = Calendar.current.isDateInTomorrow(yourDate) 

This guide есть все они в Objective-C и Swift:

enter image description here

Смежные вопросы