Calcular periodo e horas entre datas
Pessoal, preciso da ajuda de alguém com isso, pois não faço ideia de como fazer.
Recebo uma data inicial e um tempo de esforço, a partir daí preciso calcular a data final de acordo com o tempo informado e distribuir nos dias do período as horas utilizadas.
Obs: Tomando como base uma jornada 07:30 - 12:00 e 13:00 - 17:30 e intervalo 12:00 - 13:00, para esse cálculo.
Ex:
Data Inicial -> 30-03-2017
Tempo Esforço: 22h:15m
Período Tempo
30-03-2017 9h
31-03-2017 9h
03-04-2017 4h 15m
Estou tendo dificuldade com isso, alguém poderia me ajudar, ficaria muito agradecido. Obrigado
Recebo uma data inicial e um tempo de esforço, a partir daí preciso calcular a data final de acordo com o tempo informado e distribuir nos dias do período as horas utilizadas.
Obs: Tomando como base uma jornada 07:30 - 12:00 e 13:00 - 17:30 e intervalo 12:00 - 13:00, para esse cálculo.
Ex:
Data Inicial -> 30-03-2017
Tempo Esforço: 22h:15m
Período Tempo
30-03-2017 9h
31-03-2017 9h
03-04-2017 4h 15m
Estou tendo dificuldade com isso, alguém poderia me ajudar, ficaria muito agradecido. Obrigado
Marcos
Curtidas 0
Melhor post
Marcos
02/04/2017
Pessoal, o que estou fazendo de errado, os meus cálculos dos períodos estão corretos, a soma deu 9.0 para os dois períodos, mas para o tempo de esforço que deveria dar 20.25, está dando 23.25.
Desde já agradeço a ajuda.
String tempoEsforco = "20:15:00";
String horaInicioManha = "07:30:00";
String horaFimManha = "12:00:00";
String horaInicioTarde = "13:00:00";
String horaFimTarde = "17:30:00";
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
//Período da manhã
Date hm1 = sdf.parse(horaInicioManha);
Date hm2 = sdf.parse(horaFimManha);
double diffInMillis1 = (hm2.getTime() - hm1.getTime())/ (double) (1000*60*60); //4.5
int horasManha = (int) (diffInMillis1);
int minutosManha = (int) ((diffInMillis1-horasManha) * 60);
//System.out.println(horasManha+ " : " +minutosManha);
//Período da tarde
Date ht1 = sdf.parse(horaInicioTarde);
Date ht2 = sdf.parse(horaFimTarde);
double diffInMillis2 = (ht2.getTime() - ht1.getTime())/ (double) (1000*60*60); //4.5
int horasTarde = (int) (diffInMillis2);
int minutosTarde = (int) ((diffInMillis2-horasTarde) * 60);
//System.out.println(horasTarde+ " : " +minutosTarde);
//Total dos dois períodos
double somaDiffInMillis = diffInMillis1 + diffInMillis2; //9.0
int horasTotal = (int) (somaDiffInMillis);
int minutosTotal = (int) ((somaDiffInMillis-horasTotal) * 60);
//System.out.println(horasTotal+ " : " +minutosTotal);
//Tempo esforço
Date tempoEsf = sdf.parse(tempoEsforco);
double diffInMillisTempoEsforco = (tempoEsf.getTime()) / (double) (1000*60*60);
//Aqui deveria dar 20.25 e está dando 23.25
Desde já agradeço a ajuda.
GOSTEI 1
Mais Respostas
álvaro Gomes
31/03/2017
Caro amigo, veja se esse tópico te ajuda:
https://www.devmedia.com.br/forum/calcular-tempo-de-fabricacao-entre-duas-datas-horas/297785
GOSTEI 0
Marcos
31/03/2017
Bom dia Álvaro!
Obrigado pela dica, mas como não é Java não me ajuda muito.
Obrigado pela dica, mas como não é Java não me ajuda muito.
GOSTEI 0
Marcos
31/03/2017
Bom dia! Poderiam encaminhar esse post pata o Diogo Souza?
Obrigado
Obrigado
GOSTEI 0