Как получить разницу между двумя днями в iPhone - PullRequest
1 голос
/ 16 декабря 2009

Я хотел бы рассчитать количество дней, часов, минут между двумя разными датами в iPhone (Цель C). Пожалуйста, предоставьте любой пример кода, чтобы сделать то же самое.

Спасибо Сандип

Ответы [ 4 ]

4 голосов
/ 16 декабря 2009

Если ваши даты в объектах NSDate, вы можете использовать метод timeIntervalSinceDate, чтобы найти разницу как NSTimeInterval, которая даст вам разницу в секундах.

Затем вы можете преобразовать секунды в дни, часы и минуты с помощью простого алгоритма (это не в моей голове и не проверено):

minutes = seconds / 60;
seconds %= 60;
hours = minutes / 60;
minutes %= 60;
days = hours / 24;
hours %= 24;
4 голосов
/ 16 декабря 2009
    NSCalendar* gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    unsigned int uintFlags = NSYearCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit | NSHourCalendarUnit;
    NSDateComponents* differenceComponents = [gregorian components:uintFlags fromDate:firstDate toDate:secondDate options:0];

, тогда просто проверьте свойства разностных компонентов. Вы можете найти все эти свойства в документации, прилагаемой к XCode

2 голосов
/ 06 февраля 2010

Я написал всеобъемлющую программу, чтобы дать разницу между двумя датами в C (не знаю, что вы подразумеваете под Целью C). Пожалуйста, найдите оригинальную работу здесь.

http://tech.bragboy.com/2010/02/different-between-two-days-implemented.html

0 голосов
/ 21 января 2014

Опираясь на ответ Ферруччо, что-то вроде этого поможет вам найти разницу во времени для объединенной строки, в которой вы сможете узнать, сколько дней, часов и минут с даты, которую вы сравниваете (YOURNSDATE) до настоящего момента

NSTimeInterval timeDifference = [[NSDate date] timeIntervalSinceDate:YOURNSDATE];
        NSInteger seconds = (NSInteger)timeDifference;
        NSInteger minutes;
        NSInteger hours;
        NSInteger days;

        minutes = seconds / 60;
        seconds %= 60;
        hours = minutes / 60;
        minutes %= 60;
        days = hours / 24;
        hours %= 24;

        NSString* daysString = [NSString stringWithFormat:@"%i days ", days];
        if(days == 0){
            daysString = @"";
        }else if(days == 1){
            daysString = [NSString stringWithFormat:@"%i day ", days];
        }
        NSString* hoursString = [NSString stringWithFormat:@"%i hrs ", hours];
        if(hours == 0){
            hoursString = @"";
        }else if(hours == 1){
            hoursString = [NSString stringWithFormat:@"%i hr ", hours];
        }
        NSString* minutesString = [NSString stringWithFormat:@"%i min", minutes];
        if(minutes == 0){
            minutesString = @"";
        }

        NSString *AllDatesString = [NSString stringWithFormat:@"%@%@%@", daysString, hoursString, minutesString];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...