none
Calculo de Horas RRS feed

  • Pergunta

  • Blz galera?

    Estou precisando fazer um calculo de horas para um sistema de banco de horas, porém não estou conseguindo fazer um calculo especifico.

    Tenho três dateTimes = hora1, hora2, hora3, hora4. Faço o calculo para saber a quantidade de horas trabalhadas nesse intervalo, tudo sem problemas. O problema é que com o resultado obtido através desse calculo preciso subtrair o resultado em 9 horas por exemplo.

    Ex: hora1 + hora2 + hora3 + hora4 = 12H

    12H - 9H = 3H. Esse resultado de 3H é que não consigo. Alguém poderia me ajudar?

    Segue o código.

    public string CalcularDiferencaHorasTrabalhadas(DateTime jornada, DateTime hora1, DateTime hora2, DateTime hora3, DateTime hora4)
            {
                hora1 = DateTime.Parse(Convert.ToString(hora1));
                hora2 = DateTime.Parse(Convert.ToString(hora2));
                hora3 = DateTime.Parse(Convert.ToString(hora3));
                hora4 = DateTime.Parse(Convert.ToString(hora4));
                jornada = DateTime.Parse(Convert.ToString(jornada));
    TimeSpan jornadaPadrao = new TimeSpan(jornada.Ticks);
                TimeSpan horasTrabalhadasCalculda = new TimeSpan((hora2.Ticks - hora1.Ticks) + (hora4.Ticks - hora3.Ticks)).Subtract(jornadaPadrao);
    return horasTrabalhadasCalculda.ToString(@"hh\:mm");

    Valeu pessoal.

    terça-feira, 16 de janeiro de 2018 13:23

Respostas

  • Herbert, boa tarde!

    Tente o seguinte:

    public string CalcularDiferencaHorasTrabalhadas(DateTime jornada, DateTime hora1, DateTime hora2, DateTime hora3, DateTime hora4)
            {
                hora1 = DateTime.Parse(Convert.ToString(hora1));
                hora2 = DateTime.Parse(Convert.ToString(hora2));
                hora3 = DateTime.Parse(Convert.ToString(hora3));
                hora4 = DateTime.Parse(Convert.ToString(hora4));
                jornada = DateTime.Parse(Convert.ToString(jornada));
    TimeSpan jornadaPadrao = new TimeSpan(jornada.Ticks);
                TimeSpan horasTrabalhadasCalculda = new TimeSpan((hora2.Ticks - hora1.Ticks) + (hora4.Ticks - hora3.Ticks)).Subtract(jornadaPadrao);
    horasTrabalhadasCalculda = horasTrabalhadasCalculda.Add(new TimeSpan(-9, 0, 0));
    return horasTrabalhadasCalculda.ToString(@"hh\:mm");
    }

    Qualquer dúvida, estou a disposição.

    att.

    Felipe

    • Marcado como Resposta Herbert Freitas terça-feira, 16 de janeiro de 2018 16:25
    terça-feira, 16 de janeiro de 2018 15:35
  • Consegui fazendo da seguinte forma:

    hora1 = DateTime.Parse(Convert.ToString(hora1));
                hora2 = DateTime.Parse(Convert.ToString(hora2));
                hora3 = DateTime.Parse(Convert.ToString(hora3));
                hora4 = DateTime.Parse(Convert.ToString(hora4));
                jornada = DateTime.Parse(Convert.ToString(jornada));
    
                TimeSpan horasTrabalhadasCalculda = new TimeSpan((hora2.Ticks - hora1.Ticks) + (hora4.Ticks - hora3.Ticks));
    
                int jornadaHora = jornada.Hour;
                int jornadaMinuto = jornada.Minute;
                int jornadaSegundo = jornada.Second;
    
                horasTrabalhadasCalculda = horasTrabalhadasCalculda.Add(new TimeSpan((jornadaHora * -1), jornadaMinuto, jornadaSegundo));
    
                return horasTrabalhadasCalculda.ToString(@"hh\:mm");

    Caso alguém tenha uma solução melhor, fiquem a vontade.

    Obrigado a todos.

    terça-feira, 16 de janeiro de 2018 16:07

Todas as Respostas

  • Herbert, boa tarde!

    Tente o seguinte:

    public string CalcularDiferencaHorasTrabalhadas(DateTime jornada, DateTime hora1, DateTime hora2, DateTime hora3, DateTime hora4)
            {
                hora1 = DateTime.Parse(Convert.ToString(hora1));
                hora2 = DateTime.Parse(Convert.ToString(hora2));
                hora3 = DateTime.Parse(Convert.ToString(hora3));
                hora4 = DateTime.Parse(Convert.ToString(hora4));
                jornada = DateTime.Parse(Convert.ToString(jornada));
    TimeSpan jornadaPadrao = new TimeSpan(jornada.Ticks);
                TimeSpan horasTrabalhadasCalculda = new TimeSpan((hora2.Ticks - hora1.Ticks) + (hora4.Ticks - hora3.Ticks)).Subtract(jornadaPadrao);
    horasTrabalhadasCalculda = horasTrabalhadasCalculda.Add(new TimeSpan(-9, 0, 0));
    return horasTrabalhadasCalculda.ToString(@"hh\:mm");
    }

    Qualquer dúvida, estou a disposição.

    att.

    Felipe

    • Marcado como Resposta Herbert Freitas terça-feira, 16 de janeiro de 2018 16:25
    terça-feira, 16 de janeiro de 2018 15:35
  • Boa tarde Felipe.

    Obrigado pela ajuda, assim funcionou certinho porém eu preciso fazer esse calculo usando variáveis, esse é o problema. A variável jornada é um dateTime (16/01/2018 09:00:00). E eu preciso pegar essa hora(9) e diminuir do horasTrabalhadasCalculada

    Obrigado.

    terça-feira, 16 de janeiro de 2018 15:57
  • Consegui fazendo da seguinte forma:

    hora1 = DateTime.Parse(Convert.ToString(hora1));
                hora2 = DateTime.Parse(Convert.ToString(hora2));
                hora3 = DateTime.Parse(Convert.ToString(hora3));
                hora4 = DateTime.Parse(Convert.ToString(hora4));
                jornada = DateTime.Parse(Convert.ToString(jornada));
    
                TimeSpan horasTrabalhadasCalculda = new TimeSpan((hora2.Ticks - hora1.Ticks) + (hora4.Ticks - hora3.Ticks));
    
                int jornadaHora = jornada.Hour;
                int jornadaMinuto = jornada.Minute;
                int jornadaSegundo = jornada.Second;
    
                horasTrabalhadasCalculda = horasTrabalhadasCalculda.Add(new TimeSpan((jornadaHora * -1), jornadaMinuto, jornadaSegundo));
    
                return horasTrabalhadasCalculda.ToString(@"hh\:mm");

    Caso alguém tenha uma solução melhor, fiquem a vontade.

    Obrigado a todos.

    terça-feira, 16 de janeiro de 2018 16:07