Сначала необходимо преобразовать время начала и окончания в единицу (минуты), вычесть минуты, а затем преобразовать обратно в часы: минуты.
Например, calc startTotalMinutes в качестве startHours * 60 + startMinutes. Сделайте то же самое со временем финиша. Вычтите startTotalMinutes из finishTotalMinutes. Компенсировать результат ниже нуля (я думаю, просто добавить 1440). Затем преобразуйте этот результат обратно в часы: минуты. Для часов сделайте результат 60, а остаток - результат минут.
Редактировать: Ниже приведен пример кода по запросу. Также обратите внимание на исправление: часы делятся на 60, а минуты - результат 60.
- (int)hoursMinutesTextToMinutes:(NSString *)hoursText minutesText:(NSString *)minutesText
{
return [hoursText intValue] * 60 + [minutesText intValue];
}
-(IBAction)done:(id)sender
{
int startTotalMinutes = [self hoursMinutesTextToMinutes:startHours.text minutesText:startMinutes.text];
int finishTotalMinutes = [self hoursMinutesTextToMinutes:finishHours.text minutesText:finishMinutes.text];
int difference = finishTotalMinutes - startTotalMinutes;
if (difference < 0)
{
difference += 1440;
}
int diffHours = difference / 60;
int diffMinutes = difference % 60;
totalHours.text = [NSString stringWithFormat:@"%d", diffHours];
totalMinutes.text = [NSString stringWithFormat:@"%d", diffMinutes];
}
hoursMinutesTextToMinutes - это вспомогательный метод, который возвращает текст часы: минуты в виде целых минут. Это позволяет избежать дублирования этого кода.
Требуется только одно действие кнопки (я использовал «готово»).
Обратите внимание, что проверка введенного текста не производится. Вам следует добавить проверку или использовать UIDatePicker, чтобы пользователь мог указать время начала / окончания.