Вопрос

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

Эти значения представляют собой целые текстовые значения.

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

Так что если

time 1 = 161500
time 2 = 171500

timedifference = 003000
Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

}

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top