11

How can I compare two different dates to find out which is the later date? For example, in date1 I will store one date after downloading some data, and in date2, I will store the current date. Then I need to check which one is greater/later: something like if(date1>date2).

jscs
  • 63,694
  • 13
  • 151
  • 195
Kiran
  • 1,289
  • 3
  • 15
  • 25
  • 1
    Before posting a question, please check if it hasn’t already been asked on Stack Overflow by using the search box on the top right corner. For example, search for `compare two NSDate`. –  Apr 20 '11 at 09:01

4 Answers4

25

Something like:

    NSDate* timeNow = [NSDate date];

    // If less than 30 seconds, do something
    if ([timeNow timeIntervalSinceDate:anEarlierTime] < 30.0f)
    {
        // Do something
    }
Dave F
  • 973
  • 9
  • 19
  • thanx for ur reply,,small clarification ,if time interval is 24 hours(1 day) how can i check that? – Kiran Apr 20 '11 at 09:14
  • 2
    Well, 60 seconds in a minute, 60 minutes in an hour, and 24 hours would give you 86,400 :-) – Dave F Apr 20 '11 at 10:42
25

you can use NSDate's compare: method:

NSComparisonResult result = [Date2 compare:Date1];

if(result==NSOrderedAscending)
    NSLog(@"Date1 is in the future");
else if(result==NSOrderedDescending)
    NSLog(@"Date1 is in the past");
else
    NSLog(@"Both dates are the same");
Hemang
  • 26,840
  • 19
  • 119
  • 186
PgmFreek
  • 6,374
  • 3
  • 36
  • 47
3

This is what I used for comparing dates with timezones, and worked for me using iOS 6

        NSComparisonResult result = [timeStamp compare:serverDate];
        NSDateFormatter *df = [[NSDateFormatter alloc] init];
        [df setDateFormat:@"yyyy-MM-dd HH:mm:ss z"];
        switch (result)
        {
            case NSOrderedAscending:
                NSLog(@"%@ is greater than %@", [df stringFromDate:serverDate], [df stringFromDate:timeStamp]);
                break;
            case NSOrderedDescending:
                NSLog(@"%@ is less %@", [df stringFromDate:serverDate], [df stringFromDate:timeStamp]);
                break;
            case NSOrderedSame:
                NSLog(@"%@ is equal to %@", [df stringFromDate:serverDate], [df stringFromDate:timeStamp]);
                break;
            default:
                NSLog(@"erorr dates %@, %@", [df stringFromDate:serverDate], [df stringFromDate:timeStamp]);
                break;
        }
danielsalare
  • 335
  • 3
  • 14
3
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd"];
NSDate *dt1 = [[NSDate alloc] init];
NSDate *dt2 = [[NSDate alloc] init];
dt1 = [df dateFromString:@"2011-02-25"];
dt2 = [df dateFromString:@"2011-03-25"];
NSComparisonResult result = [dt1 compare:dt2];
switch (result)
{
    case NSOrderedAscending: NSLog(@"%@ is greater than %@", dt2, dt1); break;
    case NSOrderedDescending: NSLog(@"%@ is less %@", dt2, dt1); break;
    case NSOrderedSame: NSLog(@"%@ is equal to %@", dt2, dt1); break;
    default: NSLog(@"erorr dates %@, %@", dt2, dt1); break;
}
Shawn Chin
  • 84,080
  • 19
  • 162
  • 191
iphonedev23
  • 991
  • 2
  • 12
  • 24