Fórum Calcular periodo e horas entre datas #579578
31/03/2017
0
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
Curtir tópico
+ 0Post mais votado
02/04/2017
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.
Marcos
Gostei + 1
Mais Posts
31/03/2017
álvaro Gomes
Gostei + 0
31/03/2017
Marcos
Obrigado pela dica, mas como não é Java não me ajuda muito.
Gostei + 0
03/04/2017
Marcos
Obrigado
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)