Вычислить разницу времени в Какао - PullRequest
13 голосов
/ 17 марта 2009

У меня есть два значения времени в формате:% H% M% S (E.G.161500)

Эти значения являются текстовыми целыми числами.

Существует ли в Какао простая функция, которая вычисляет разницу между этими двумя целыми числами по 60-минутной и минутной шкале?

Так что если

time 1 = 161500
time 2 = 171500

timedifference = 003000

Ответы [ 4 ]

33 голосов
/ 18 марта 2009
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"HHmmss"];

NSDate *date1 = [dateFormatter dateFromString:@"161500"];
NSDate *date2 = [dateFormatter dateFromString:@"171500"];

NSTimeInterval diff = [date2 timeIntervalSinceDate:date1]; // diff = 3600.0
10 голосов
/ 17 марта 2009

Класс для манипулирования датами NSDate. Метод получения временных интервалов -timeIntervalSinceDate:. Результатом является значение NSTimeInterval, которое представляет собой double, представляющий интервал в секундах.

Вы можете создать NSDate объект из NSString с +dateWithString:, при условии, что ваша дата отформатирована как 2001-03-24 10:45:32 + 0600 .

4 голосов
/ 23 мая 2012

попробуйте этот код.

- (NSTimeInterval)intervalBetweenDate:(NSDate *)dt1 andDate:(NSDate *)dt2 {

NSTimeInterval interval = [dt2 timeIntervalSinceDate:dt1];
NSLog(@"%f",interval);
return interval;

}

1 голос
/ 17 марта 2009

Я бы создал подкласс NSFormatter для разбора значений времени в этом формате из входных данных (вы можете поместить один в текстовое поле для автоматического преобразования ввода пользователя или использовать его для разбора источника данных в коде). Пусть он вернет объединенное количество секунд в виде NSTimeInterval (двойное значение, представляющее секунды), заключенного в NSNumber. Отсюда легко вычесть разницу и отобразить ее, используя тот же класс NSFormatter, который вы создали. Как при разборе, так и при отображении значений, вы несете ответственность за написание кода, конвертирующего из секунд в часы: минуты: секунды или любой другой формат, который вам нравится. Вы также можете преобразовать эти значения в NSDate, как упомянуто mouviciel, если это имеет смысл для вашего приложения. Просто имейте в виду, что вы всегда будете хранить разницу во времени с контрольной датой, обычно 1 января 1970 года (NSDate имеет методы, чтобы сделать это для вас).

...