Факторинг в ночные смены на калькулятор рабочего времени - PullRequest
0 голосов
/ 09 марта 2010

ОК,

Спасибо всем, кто помог с моим трудом. Однако есть один камень преткновения - мне нужно учитывать ночные смены. Например, если время начала составляет 13 часов, а время окончания - 2 часа - я хочу, чтобы оно доходило до 15 часов, а не 11 часов. Это код:

  -(IBAction)done:(id)sender {
  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];
  if (finishHours.text > startHours.text) {
    totalHours.text= [NSString stringWithFormat:@"%02d:%02d", hours, minutes];
  }

1 Ответ

1 голос
/ 09 марта 2010

Прежде всего вы должны вычесть начало из конца, а не наоборот.

Вы хотите использовать модульную арифметику:

-(IBAction)done:(id)sender {
int result = (([finishHours.text intValue] * 60) + [finishMinutes.text intValue]) - 
(([startHours.text intValue] * 60) + [startMinutes.text intValue]);

// Use modular arithmetic to find absolute time difference
result = (result + 24*60)%(24*60);

// Display answer
int minutes = result%60;
int hours = (result - minutes)/60;
totalHours.text = [NSString stringWithFormat:@"%02d:%02d", hours, minutes];
if (finishHours.text > startHours.text) {
  totalHours.text= [NSString stringWithFormat:@"%02d:%02d", hours, minutes];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...