GARANTIR DESCONTO

Fórum Calcular periodo e horas entre datas #579578

31/03/2017

0

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
Marcos

Marcos

Responder

Post mais votado

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.

	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

Marcos
Responder

Gostei + 1

Mais Posts

31/03/2017

álvaro Gomes

Caro amigo, veja se esse tópico te ajuda:

https://www.devmedia.com.br/forum/calcular-tempo-de-fabricacao-entre-duas-datas-horas/297785
Responder

Gostei + 0

31/03/2017

Marcos

Bom dia Álvaro!

Obrigado pela dica, mas como não é Java não me ajuda muito.
Responder

Gostei + 0

03/04/2017

Marcos

Bom dia! Poderiam encaminhar esse post pata o Diogo Souza?

Obrigado
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar