2009-03-17 7 views
13

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

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

Есть ли простая функция в какао, которая вычисляет разницу между этими двумя целыми числами с использованием шкалы 60 секунд и минут?

Так что если

time 1 = 161500 
time 2 = 171500 

timedifference = 003000 

ответ

33
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

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

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

+1

И если это не так, вы можете создать экземпляр NSDateFormatter с нужной строкой формата. –

+0

Это полезно. Спасибо. – Jirapong

1

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

4

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

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

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

}

 Смежные вопросы

  • Нет связанных вопросов^_^