Как мне преобразовать число в часы и минуты? - PullRequest
1 голос
/ 09 марта 2010

Я получил помощь по правильному вычислению на днях, но я попал в блок о том, как внедрить его в код.

-(IBAction)done:(id)sender {
  int result = (([startHours.text intValue] * 60) + [startMinutes.text intValue]) - 
  (([finishHours.text intValue] * 60) + [finishMinutes.text intValue]);
  totalHours.text = [NSString stringWithFormat:@"%i", result / 60];
  if (result < 0) { 
    totalHours.text = [NSString stringWithFormat:@"%d", result * -1];
  }

Код выше. Однако в текстовом поле оно отображается как общее количество минут. Я хочу скрыть это, чтобы оно отображалось как общее количество часов и минут (10.30). Как бы я сделал это в коде?

Ответы [ 3 ]

5 голосов
/ 09 марта 2010

Если результат - время в минутах:

int minutes = result%60
int hours = (result - minutes)/60
totalHours.text = [NSString stringWithFormat:@"%d.%d", hours, minutes];
3 голосов
/ 09 марта 2010

Феликс ответ в порядке. Всего два небольших дополнения: обрабатывать знак интервала перед вычислением частей и использовать более распространенный формат времени:

  int result = (([startHours.text intValue] * 60) + [startMinutes.text intValue]) - 
  (([finishHours.text intValue] * 60) + [finishMinutes.text intValue]);

  int minutes = abs(result)%60
  int hours = (abs(result) - minutes)/60
  totalHours.text = [NSString stringWithFormat:@"%02d:%02d", hours, minutes];
0 голосов
/ 09 марта 2010

Попробуйте изменить int на float.

-(IBAction)done:(id)sender {
  float result = (([startHours.text intValue] * 60) + [startMinutes.text intValue]) - 
  (([finishHours.text intValue] * 60) + [finishMinutes.text intValue]);
  totalHours.text = [NSString stringWithFormat:@"%2.2f", result / 60];
  if (result < 0) { 
    totalHours.text = [NSString stringWithFormat:@"%2.2f", result * -1];
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...