mrrmatinsi
mrrmatinsi

Reputation: 283

Find out if an NSDate is today, yesterday, tomorrow

With the iOS SDK I need to find an easy and secure way to see if an NSDate is today, yesterday, tomorrow. What I'm looking for is something like this in pseudo code:

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

How would you solve it?

Upvotes: 15

Views: 17973

Answers (3)

Dave
Dave

Reputation: 12206

Swift 3

let isToday = Calendar.current.isDateInToday(yourDate)

You can then check the value and proceed accordingly with simply:

if isToday {
    //If true, do this
}

There are similar functions for tomorrow, weekend, and a few others, for example:

let isTomorrow = Calendar.current.isDateInTomorrow(yourDate)

This guide has them all in Objective-C and Swift:

enter image description here

Upvotes: 4

Mark
Mark

Reputation: 480

I understand that this is pretty old, but I want to bring the answer up to date (as I didn't see anyone else post a more up to date answer).

Since iOS 8.0 you have a bunch of functions that you can use for date comparison:

  • compareDate:toDate:toUnitGranularity:
  • isDate:equalToDate:toUnitGranularity:
  • isDate:inSameDayAsDate:
  • isDateInToday:
  • isDateInTomorrow:
  • isDateInWeekend:
  • isDateInYesterday:

See below example:

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

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

isToday will be YES.

isYesterday will be NO, given that we gave it todays date.

See Apple's Documentation for further reading.

Upvotes: 41

runmad
runmad

Reputation: 14886

Check our Erica Sadun's great NSDate extension class: http://github.com/erica/NSDate-Extensions

There are lots of date comparisons, among them exactly what you need :)

Upvotes: 33

Related Questions