Вы можете использовать NSDateFormatter для создания объектов NSDate с заданными строками в формате «ЧЧ: мм», а затем использовать - [NSDate timeIntervalSinceDate:], чтобы найти количество секунд между двумя значениями времени. NSDate инкапсулирует полную дату - вы не можете иметь, чтобы она представляла только время - поэтому созданные объекты NSDate будут иметь время на определенную дату (контрольная дата, 1 января 1970 года, из моего тестирования) в местный часовой пояс. Вам нужно будет решить для себя, нужно ли вам более надежное решение, соответствующее вашим потребностям, поскольку ваши потребности неясны.
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm"];
NSDate *time1 = [formatter dateFromString:@"18:30"];
NSDate *time2 = [formatter dateFromString:@"19:45"];
[formatter release];
NSTimeInterval deltaTime = fabs([time1 timeIntervalSinceDate:time2]);
NSString *result = [NSString stringWithFormat:@"%d:%d", (int)(deltaTime/3600), (int)(deltaTime/60)%60];
Если fabs()
обернуть туда timeIntervalSinceDate:
, вы не получите отрицательного времени на основании порядка получателя и аргумента для timeIntervalSinceDate:
. Вы можете настроить это при необходимости.
Примечание: приведенное выше, вероятно, не самый лучший и не самый эффективный способ определения результата, но я просто стремился проиллюстрировать концепцию, а не оптимизировать без необходимости.