Search code examples
iphoneiosnsdatensdateformatter

Getting next date and previous day date


I basically want to convert a particular date (x) to the previous day date(x - 1 day) and also to the next day date (x + 1 day). I am using the following code for this :

NSDate *datePlusOneDay = [currentDate dateByAddingTimeInterval:(60 * 60 * 24)];

However I have my date (x) in NSString format, and I need to convert the NSString(myDateString) to NSDate(myDate) before applying the above code. I have a NSString containing date in format MM-dd-yyyy. For converting I am using the following code , but I am getting absurd values.

 NSLog(@"myDateString=%@",myDateString);//output:myDateString=10-25-2012//all correct
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM-dd-yyyy"];
NSDate *myDate=[formatter dateFromString:myDateString];
NSLog(@"myDate=%@",myDate);//output:myDate=2012-10-24 18:30:00 +0000 // I only want the date to be shown // and why has the format changed
NSDate *datePlusOneDay = [currentDate dateByAddingTimeInterval:(60 * 60 * 24)];
NSLog(@"datePlusOneDay=%@",datePlusOneDay);//output:datePlusOneDay=2012-10-25 18:30:00 +0000// I only want the date to come , not time // and why has the format changed

Later again I need to convert the NSDate to NSString

NSString *curentString=[formatter stringFromDate:datePlusOneDay];
NSLog(@"curentString=%@",curentString); //output:curentString=10-26-2012

Similarly I also want to get the previous date. Please help guys !! and ho ho MERRY CHRISTMAS !!


Solution

  • Do as: componets.day = 1 to obtain the next, -1 for the previous day.

    NSDate *date = [NSDate date]; // your date from the server will go here.
    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *components = [[NSDateComponents alloc] init];
    components.day = 1;
    NSDate *newDate = [calendar dateByAddingComponents:components toDate:date options:0];
    
    NSLog(@"newDate -> %@",newDate);