2009-09-15 3 views
7

У меня есть 2 массива со значениями времени в нем. Они имеют следующий формат. мм: ss: сотни сек. Я хочу получить разницу между двумя [lastObjects] в массивах. NSDate не работает, потому что последнее значение составляет сотню секунд.Как получить разницу во времени в iPhone

вопрос. Если вторая дата больше первой, это даст мне отрицательное число, например, -01: 10: 00?

+0

нет, это не работает для меня. –

+0

Вы не должны копировать ответы на свой вопрос. Если ответ нуждается в разъяснении, вы прокомментируете ответ, и автор ответа ответит. Решение, которое я вам дал, должно быть достаточным, чтобы указать вам в правильном направлении. Документация для NSDateFormatter расскажет вам все, что вам нужно знать о времени разбора, а документация для NSDate расскажет вам все, что вам нужно знать о поиске разницы между временем, включая поведение идентичных дат и отрицательных временных интервалов. –

+0

Упс, этого было более чем достаточно. Приносим извинения за несоблюдение протокола. –

ответ

36

Ваша задача состоит из двух частей, разбор времени и получать разницу:

NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]]; 
[dateFormatter setDateFormat:@"mm:ss:SS"]; 

NSDate* firstDate = [dateFormatter dateFromString:@"01:00:00"]; 
NSDate* secondDate = [dateFormatter dateFromString:@"01:02:00"]; 

NSTimeInterval timeDifference = [secondDate timeIntervalSinceDate:firstDate]; 
+2

NSTimeInterval interval = [secondDate timeIntervalSinceDate: firstDate]; –

1

NSDate должен работать на вас, используйте timeIntervalSinceDate:, который возвращает временной интервал, который имеет миллисекундную точность.

+1

На самом деле это субмиллисекундная точность. Однако он представлен в SECONDS. – DanM