-1

i want to remaning days from array of birthdates im using following code for it

for(int i =0;i<_convertedBdates.count;i++){

    NSDateFormatter *tempFormatter = [[NSDateFormatter alloc]init];
    [tempFormatter setDateFormat:@"dd/MM/YYYY"];
    NSDate *firstdate = [tempFormatter dateFromString:[_convertedBdates objectAtIndex:i]];


    NSString *curYear = [tempFormatter stringFromDate:[NSDate date]];
    NSDate *secondDate = [tempFormatter dateFromString:curYear];
    NSTimeInterval lastDiff = [firstdate timeIntervalSinceNow];
    NSTimeInterval todaysDiff = [secondDate timeIntervalSinceNow];
    NSTimeInterval dateDiff = lastDiff  - todaysDiff;
    int day = dateDiff/(3600*24);

    NSLog(@" _newlymadeArray %@",[_convertedBdates objectAtIndex:i]);

    NSLog(@" days %d",day);
    [_daysremaining addObject:[NSString stringWithFormat:@"%d",day] ];
    }
    NSLog(@" days %@",_daysremaining);

what wrong i am doing why i am not getting correct days

Guo Luchuan
  • 4,729
  • 25
  • 33
user2189388
  • 202
  • 1
  • 4
  • 10
  • @jvnill you are suggesting a PHP related question as being a dupe for a objective-c related question? – Till Apr 01 '13 at 02:13

3 Answers3

2
for(int i =0;i<_convertedBdates.count;i++){
    NSDateFormatter *tempFormatter = [[NSDateFormatter alloc]init];
    [tempFormatter setDateFormat:@"dd/MM/YYYY"];
    NSDate *firstdate = [tempFormatter dateFromString:[_convertedBdates objectAtIndex:i]];

    NSString *curYear = [tempFormatter stringFromDate:[NSDate date]];
    NSDate *secondDate = [tempFormatter dateFromString:curYear];
    NSTimeInterval lastDiff = [firstdate timeIntervalSinceNow];
    NSTimeInterval todaysDiff = [secondDate timeIntervalSinceNow];
    NSTimeInterval dateDiff = lastDiff  - todaysDiff;
    int day = dateDiff/(3600*24);
    day = day -1;
    NSLog(@" _newlymadeArray %@",[_convertedBdates objectAtIndex:i]);

    NSLog(@" days %d",day);
    [_daysremaining addObject:[NSString stringWithFormat:@"%d",day] ];
}
NSLog(@" days %@",_daysremaining);
Sebastian
  • 7,670
  • 5
  • 38
  • 50
Pradeep
  • 563
  • 1
  • 3
  • 16
2

try like this it will help you,

NSString *start = @"03/12/2013";
NSString *end = @"09/12/2013";

NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setDateFormat:@"dd/mm/yyyy"];
NSDate *startDate = [f dateFromString:start];
NSDate *endDate = [f dateFromString:end];

NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorianCalendar components:NSDayCalendarUnit
                                                    fromDate:startDate
                                                      toDate:endDate
                                                     options:0];
NSLog(@"%d",[components day]);
markgz
  • 6,054
  • 1
  • 19
  • 41
Balu
  • 8,470
  • 2
  • 24
  • 41
1

Keep your code simple :

You can use a method and call it within your calculation block:

- (NSInteger)daysBetweenDate:(NSDate*)fromDateTime andDate:(NSDate*)toDateTime{
    NSDate *fromDate;
    NSDate *toDate;

    NSCalendar *calendar=[NSCalendar currentCalendar];

    [calendar rangeOfUnit:NSDayCalendarUnit startDate:&fromDate interval:NULL forDate:fromDateTime];
    [calendar rangeOfUnit:NSDayCalendarUnit startDate:&toDate interval:NULL forDate:toDateTime];

    NSDateComponents *difference = [calendar components:NSDayCalendarUnit
        fromDate:fromDate toDate:toDate options:0];

    return [difference day];
}
Anoop Vaidya
  • 46,283
  • 15
  • 111
  • 140