Pregunta

Actualmente tengo una función que puede tomar la hora de inicio y finalización de un día, y calcular la diferencia entre las dos, dándome las horas trabajadas en un día.Lo que me gustaría hacer es poder obtener las horas trabajadas durante 7 días y devolver un total general, manteniendo el formato de visualización (HH:mm).

Mi función para el total de un solo día:

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[] y this.endTime[] son ​​matrices de objetos DateTime.

¿Alguna sugerencia?

¿Fue útil?

Solución 3

Solución con la que terminé para aquellos interesados.

    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);

Otros consejos

Se necesitará algo para mantener el valor de una semana de días, y llame a su función una vez por cada día.

Pero eso significa que querrá refactorizar para que su método calculadora no hace formato como una cadena, sino que se devuelve un valor numérico, por lo que puede agregar fácilmente juntos.

Otra solución simple:

Aquí es un método que recibe separar las horas y los minutos
Los parámetros son:.

  • Start horas
  • Start Minutos
  • Fin horas
  • Fin Minutos

primero, calcular la diferencia entre las horas y minutos separados:

int hours   = pEndHour - pStartHour;
int minutes = ((60 - pStartMinutes) + pEndMinutes) - 60;

a continuación, valida si el valor de "minutos" variable es negativo:

// If so, the "negative" value of minutes is our remnant to the next hour
 if (minutes < 0) {
  hours--;
  minutes = 60 + minutes ;
 }

Por último, puede imprimir el período de tiempo en el formato horas:

String format = String.format("%%0%dd", 2);
System.out.println( "*** " + hours + " : " + minutes);

Eso es todo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top