datebyAddingTimeInterval not working

10,327

Solution 1

[endDate dateByAddingTimeInterval:dayinseconds]; returns a value which is the new date produced by the function. Dates are immutable objects (like strings) so you cannot modify them - you can only get a new date by applying a function.

If you write this, instead, it will work:

endDate = [endDate dateByAddingTimeInterval:dayinseconds];

Solution 2

[endDate dateByAddingTimeInterval:dayinseconds]; doesn't change your existing object (endDate), it returns a new NSDate object, so do

endDate = [endDate dateByAddingTimeInterval:dayinseconds];
NSLog(@"Csantos: event ends: %@", endDate);
Share:
10,327
Claudio
Author by

Claudio

Objective-C Developer

Updated on June 10, 2022

Comments

  • Claudio
    Claudio almost 2 years

    in some cases, I need to increment a NSDate in 1 day. For it, I'm using dateByAddingTimeInterval, but it's not working.

    Here is the code:

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"dd/MM/yyyy HH:mm"];
    NSString *startDate = [NSString stringWithFormat:@"%@/2012 %@",dayString, begin];
    NSString *endStringForDate = [NSString stringWithFormat:@"%@/2012 %@",dayString, end];
    
    NSLog(@"Csantos: event starts: %@, event ends: %@", startDate, endStringForDate);
    
    NSDate *beginDate = [dateFormat dateFromString:startDate];
    NSDate *endDate = [dateFormat dateFromString:endStringForDate];
    
    NSComparisonResult result = [beginDate compare:endDate];
    
    
    if(result == NSOrderedDescending){
        NSTimeInterval dayinseconds = 24 * 60 * 60;
    
        [endDate dateByAddingTimeInterval:dayinseconds];
        NSLog(@"Csantos: event ends: %@", endDate);
    }
    

    Results:

    2012-01-24 12:09:47.837 app[3689:207] Csantos: event starts: 19/02/2012 23:00, event ends: 19/02/2012 03:00
    2012-01-24 12:09:47.837 app[3689:207] Csantos: event ends: 19/02/2012 03:00
    

    I already tried addTimeInterval (deprecated, I know), but it's not working too. What is wrong?

    Regards!