Java - Ayuda con sumar y restar horas

 
Vista:
Imágen de perfil de Jose
Val: 4
Ha disminuido su posición en 12 puestos en Java (en relación al último mes)
Gráfica de Java

Ayuda con sumar y restar horas

Publicado por Jose (2 intervenciones) el 15/01/2020 19:06:20
Hola soy estudiante de primer año en programación, resulta que en estos días en mi trabajo mi jefe me pidió ayuda para hacer el horario de la tienda lo que me llevo a querer crear un programa para hacerlo mas facil pero esto implica poner una hora de entrada una hora de salida, calcular cuantas horas hay entre esas 2 variables restar 1 hora de almuerzo y que cada día alamacena la cantidad de horas si fueran horas puntuales seria mas facil por ejemplo si entra a las 10 y sale a las 21 se restan entre si lo que da 11 se le resta 1 de hora de descanso y da 10 horas que se almacenarian en un dia X para ser sumados con todos los dias trabajados pero el problema empieza cuando la persona entra a las 10:30 y se va a las 19:45 alguna idea como le puedo hacer ???? les dejo una foto de la Jframe que e echo
Ejemplo-1


Empezando no se que tipo de variable tengo que usar toda la ayuda se agradese
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 2.268
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda con sumar y restar horas

Publicado por Kabuto (568 intervenciones) el 16/01/2020 00:31:23
Puedes transformar las horas en minutos para los cálculos.

Es decir, un día tiene 24 x 60 = 1440 minutos

El día empieza en el minuto 0 y acaba en el minuto 1440

Si alguien entra a las 10:30, significa que ha entrado en el minuto 630 del día.
Si sale a las 19:45, significa que se va en el minuto 1185 del día.

Calculamos la diferencia entre estos minutos: 1185 - 630 = 555

Significa que ha trabajado 555 minutos, es decir, 9 horas y 15 minutos (luego habría que descontar la hora de descanso y lo que corresponda)

Trabajando con minutos los cálculos son más sencillos de hacer. Lo único que hay que saber es como pasar de horas a minutos y viceversa.

Por ejemplo, los 555 minutos, para pasar a horas basta con dividir entre 60 e ignorar la parte decimal
555 / 60 = 9
Para calcular los minutos correspondientes a la parte decimal que hemos ignorado, hacemos modulo de 60
555 mod 60 = 15

Con esos calculos obtenemos que 555 minutos trabajados son 9 horas y 15 minutos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Billy Joel
Val: 2.055
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda con sumar y restar horas

Publicado por Billy Joel (561 intervenciones) el 16/01/2020 14:50:09
Acá te dejo algo que te puede servir

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.time.LocalTime;
import java.time.temporal.ChronoUnit;
 
public class CalcularHoras {
    public static void main(String[] args) {
        String h1 = "10:30";
        String h2 = "19:45";
        LocalTime hora_1 = LocalTime.parse(h1);
        LocalTime hora_2 = LocalTime.parse(h2);
        int almuerzo = 60; //Una hora = 60 minutos
        long diff = ChronoUnit.MINUTES.between(hora_1, hora_2) - almuerzo;
        Double h = diff / 60.00;
        Long m = diff % 60;
        LocalTime hf = LocalTime.of(h.intValue(), m.intValue());
        System.out.println(hf);
    }
}

Saludos,
Billy Joel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 1.241
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda con sumar y restar horas

Publicado por Rodrigo (321 intervenciones) el 16/01/2020 18:27:50
Usar Las clases Instant y Duration te libera de hacer aritmetica que podrias fallar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar