В настоящее время у меня есть функция, которая может принимать время начала и время окончания одного дня и вычислять разницу между ними, давая мне часы, отработанные за день. Что я хотел бы сделать, так это иметь возможность получить часы, отработанные в течение 7 дней, и вернуть общую сумму, оставаясь при этом в формате отображения (ЧЧ: мм).
Моя функция для одного дня:
Period p = new Period(this.startTime[dayIndex], this.endTime[dayIndex]);
long hours = p.getHours();
long minutes = p.getMinutes();
String format = String.format("%%0%dd", 2);//Ensures that the minutes will always display as two digits.
return Long.toString(hours)+":"+String.format(format, minutes);
this.startTime[] и this.endTime[] являются массивами объектов DateTime.
Какие-либо предложения?
Ответ 1 · рейтинг 1 · CPerkins
Вам понадобится что-то, чтобы удерживать недельные дни и вызывать вашу функцию один раз в каждый день.
Но это означает, что вы захотите провести рефакторинг, чтобы ваш метод калькулятора не форматировался как строка, а вместо этого возвращал числовое значение, чтобы вы могли легко складывать их вместе.
Ответ 2 · рейтинг 1 · marcello
Еще одно простое решение:
Вот метод, который получает часы и минуты отдельно.
Параметры:
- Время начала
- Стартовые минуты
- Конечный час
- Конечные минуты
сначала вычислите разницу между часами и минутами отдельно:
int hours = pEndHour - pStartHour;
int minutes = ((60 - pStartMinutes) + pEndMinutes) - 60;
затем проверяет, является ли значение переменной "минуты" отрицательным:
// If so, the "negative" value of minutes is our remnant to the next hour
if (minutes < 0) {
hours--;
minutes = 60 + minutes ;
}
Наконец, вы можете распечатать период времени в часовом формате:
String format = String.format("%%0%dd", 2);
System.out.println( "*** " + hours + " : " + minutes);
Это все.
Ответ 3 · clang1234
Решение, которым я закончил для тех, кто заинтересован
Period[] p=new Period[7];
long hours = 0;
long minutes =0;
for(int x=0; x<=this.daysEntered;x++)
{
p[x] = new Period(this.startTime[x], this.endTime[x]);
hours += p[x].getHours();
minutes += p[x].getMinutes();
}
hours += minutes/60;
minutes=minutes%60;
String format = String.format("%%0%dd", 2);
return Long.toString(hours)+":"+String.format(format, minutes);