PROBLEMAS COM SOMA DE HORAS

 Tópico anterior Próximo tópico Novo tópico

PROBLEMAS COM SOMA DE HORAS

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#484872 - 09/10/2018 15:31:30

ELMO01
BELO HORIZONTE
Cadast. em:Agosto/2004


Oi pessoal,

Estou com problemas para somar horas, tenho os seguintes horários:

08:00  //  12:00  //  13:00  //  17:00  

se eu fizer a seguinte conta (17:00 - 13:00) + (12:00 - 08:00)  vai me retornar 08:00, isso é a quantidade de horas trabalhadas por dia, Estou acumulando este horário em uma  variável tipo TimeSpan e deveria me retornar 44:00 semanais mais está me retornando {2.08:00:00}. Como faço para transformar isso em horas??

Obrigado

elmo

#484873 - 09/10/2018 17:51:08

FOXMAN
BARRETOS
Cadast. em:Janeiro/2001


Membro da equipe
Então, eu implementei a uns dois anos atras, o ponto eletrônico no meu sistema. Porèm toda parte de calculos ficam em Stored Procedure ou seja, realizado tudo no banco, alias todos os processos.
O funcionário bate o ponto normal e vou acumulando na tabela sua jornada diaria de trabalho......

Para somar uma jornada diaria :

select SEC_TO_TIME( SUM(TIME_TO_SEC(TIMEDIFF(tr.Saida1 , tr.Entrada1) ) + TIME_TO_SEC(TIMEDIFF(tr.Saida2 , tr.Entrada2) ) + TIME_TO_SEC(TIMEDIFF(tr.Saida3 , tr.Entrada3))))
    from tblregistrodeponto tr where tr.Dia  = 12 and month(tr.DataRegistro) = 6 and year(tr.DataRegistro) = 2017


Esse script sql me retorna algo tipo 08:00:00, e é adicionado em campo do tipo Time na tabela de registro de ponto.




Grupo DotNet.Br no FaceBook



#484875 - 09/10/2018 22:01:39

OMAR2011
MONTES CLAROS
Cadast. em:Setembro/2011


Isto vai retornar 56 horas e não 44.



#484879 - 10/10/2018 07:52:52

ELMO01
BELO HORIZONTE
Cadast. em:Agosto/2004


OMAR isso foi só um exemplo, inserir um horário qualquer só para fazer o programa mesmo e ter como fazer as contas.

elmo

#484886 - 10/10/2018 10:35:59

OMAR2011
MONTES CLAROS
Cadast. em:Setembro/2011


Se está usando um Datagriview então;
Dim valor As New TimeSpan()
  For Each Linha As DataGridViewRow In Me.DataGridView1.Rows
            If Linha.Cells(2).Value = "TEXTODACOLUNA" Then
                '  'Executa a soma dos valores da coluna 4
                valor = valor + TimeSpan.Parse(Linha.Cells(4).Value)

        Next
Me.txt1.Text = (String.Format("{0:00}:{1:00}", Math.Floor(valor.TotalHours), valor.Minutes))



#484890 - 10/10/2018 13:47:42

NILSONTRES
SAO PAULO
Cadast. em:Março/2012


Como o FOX disse, a melhor forma é pelo banco de dados.




Resposta escolhida #484897 - 10/10/2018 20:11:17

ADILSOO
PRATANIA
Cadast. em:Março/2012


Última edição em 10/10/2018 20:15:25 por ADILSOO

  • Separe os minutos das horas
  • Some as horas
  • Some os minutos, divida por 60 e some com o total de horas.

    Obs: No final, converta pra formato horas novamente.

    Ex:
    08:30
    08:30
    08:00

    08
    08
    08
    ----
    24

    30
    30
    00
    ----
    60

    60 / 60 = 1

    24 + 1 = 25




    O importante não é oque você sabe hoje, e sim o quanto você pode evoluir amanhã!
    Meu Skype: adilson.skype1


  • #484906 - 11/10/2018 10:02:05

    OCELOT
    SOROCABA
    Cadast. em:Março/2012


    Última edição em 11/10/2018 10:03:39 por OCELOT

    Basicamente é só pegar o total de horas removendo as casas decimais e os minutos separados e formatar manualmente, automaticamente o timespan vai usar o formato dias.horas:minutos:segundos, então só formatando manualmente mesmo.

    Dim total As String = String.Format("{0:00}:{1:00}", Math.Floor(seuTimeSpan.TotalHours), seuTimeSpan.Minutes)




    #484967 - 18/10/2018 10:32:18

    ELMO01
    BELO HORIZONTE
    Cadast. em:Agosto/2004


    Pessoal,

    Agradeço a ajuda de todos



    elmo

     Tópico anterior Próximo tópico Novo tópico


    Tópico encerrado, respostas não sao permitidas
    Encerrado por ELMO01 em 18/10/2018 10:32:28