hugo411
hugo411

Reputation: 356

obj-c : iphone programming NSTimeInterval problem

i got a problem with my time interval. I need to get the interval of two times in this format : HH:MM. If i enter : 15:35 and 16:35 it is ok, but when i do 20:30 to 01:30, it gives me like 18 hours interval.. anyone have an idea?

        NSString *startDate= starthere.text;
    NSString *endDate = endhere.text;


    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"HH:mm"];

    NSDate *dateSelected = [dateFormatter dateFromString:startDate];        
    NSDate *dateSelected2 = [dateFormatter dateFromString:endDate];
    [dateFormatter release];





        if ([dateSelected2 earlierDate:dateSelected] == dateSelected2)
        {
            dateSelected2 = [dateSelected2 dateByAddingTimeInterval:86400];
        }





interval = [dateSelected2 timeIntervalSinceDate:dateSelected];

Upvotes: 1

Views: 346

Answers (1)

Carl Norum
Carl Norum

Reputation: 224982

Your end date is before your start date, so there are 19 hours between them. A quick fix might be to add 24 hours to your end date if it compares as earlier than the start date. Something like:

if ([dateSelected2 earlierDate:dateSelected] == dateSelected2)
{
    dateSelected2 = [dateSelected2 dateByAddingTimeInterval:86400];
}

The NSDate documentation has everything you need to know.

Upvotes: 3

Related Questions