SOMAR HORAS HH:MM

JCM0867 25/04/2016 10:24:19
#461353
Olá pessoal,
Tenho tres textbox com hora e minutos

Text1 = [Ô]03:30[Ô]
Text2 = [Ô]30:45[Ô]
Text3 = [Ô]10:00[Ô]

Como faço para somar e dar como resultado: Text4 = [Ô]44:15[Ô]

Aproveitando o mesmo topico e para somar tres colunas com esses valores no SQL server logicamente colocando o resultado em um quarto campo

Grato
DAMASCENO.CESAR 25/04/2016 11:17:23
#461355
https://social.msdn.microsoft.com/Forums/sqlserver/pt-BR/16a9a3bb-79e1-4a57-b414-42f1289a56e8/como-somar-horas-no-sql-server-?forum=transactsqlpt

dá uma olhada nisso
JCM0867 25/04/2016 20:19:24
#461382
Está aí a quem interessar, meio POG mas resolveu

Public Function SomaHoraMinutos(Hora1, Hora2) [ô]Formato hh:mm
Dim Minutos As Single = CInt(Strings.Right(Hora1, 2)) + CInt(Strings.Right(Hora2, 2))

Return Str(CInt(Strings.Left(Hora1, InStr(Hora1, [Ô]:[Ô]) - 1)) + CInt(Strings.Left(Hora2, InStr(Hora2, [Ô]:[Ô]) - 1)) +
Int(Minutos / 60)) + [Ô]:[Ô] + Strings.Right([Ô]00[Ô] & Trim(Str(Minutos - IIf(Minutos < 60, 0, 60))), 2)
End Function
JABA 26/04/2016 11:57:46
#461413
Resposta escolhida
    Public Function SomaHoraMinutos(Hora1 As String, Hora2 As String) As String
Dim h1 As New TimeSpan(Split(Hora1, [Ô]:[Ô])(0), Split(Hora1, [Ô]:[Ô])(1), 0)
Dim h2 As New TimeSpan(Split(Hora2, [Ô]:[Ô])(0), Split(Hora2, [Ô]:[Ô])(1), 0)
Dim t As TimeSpan = h1 + h2
Return String.Format([Ô]{0}:{1}[Ô], CInt(Math.Truncate(t.TotalHours)), t.Minutes)
End Function
KERPLUNK 26/04/2016 13:37:25
#461420
JCM0867, a rotina que você fez até pode ter funcionado e vai funcionar para vários casos, mas ela não é nem de perto segura. Sugiro que use a solução do JABA, Muito mais segura e correta. E uma dica, é aprender a usar os tipos corretos de dados. Tente não usar tudo como string.
JCM0867 26/04/2016 20:28:13
#461464
Beleza, mas um detalhe
Um resultado é [Ô]15:02[Ô] fica 15:2
onde altero para para que fique [Ô]15:02[Ô]?

Claro que poderia fazer um tratamento da string final

JABA 26/04/2016 20:57:06
#461466
Citação:

Beleza, mas um detalhe
Um resultado é [Ô]15:02[Ô] fica 15:2
onde altero para para que fique [Ô]15:02[Ô]?



    Public Function SomaHoraMinutos(Hora1 As String, Hora2 As String) As String
Dim h1 As New TimeSpan(Split(Hora1, [Ô]:[Ô])(0), Split(Hora1, [Ô]:[Ô])(1), 0)
Dim h2 As New TimeSpan(Split(Hora2, [Ô]:[Ô])(0), Split(Hora2, [Ô]:[Ô])(1), 0)
Dim t As TimeSpan = h1 + h2
Return String.Format([Ô]{0:D2}[Ô], CInt(Math.Truncate(t.TotalHours))) & String.Format([Ô]:{0:D2}[Ô], t.Minutes)
End Function

JCM0867 26/04/2016 21:28:32
#461468
JABA funcionou 100%

Eu até achei exemplos na internet usando TimeSpan, mas não entendi nada.
Agora clareou as idéias de como funciona o TimeSpan

Valeu

Valeu tb a dica KERPLUNK

Tópico encerrado , respostas não são mais permitidas