CALCULO COM HORAS
olá amigos.
estou com um problema hoje que me surpreendeu e não sei como resolver..
faço uma soma de alguns horários e esse resultada eu comparo com um tempo padrão.
tudo funcionou bem, até uma hora acumular mas de 23:59... tenho um resultado que dá 25:44:00 que não consigo passar para Timespan, nem date, nem datetime..
qual variável devo utilizar? ou como converter 25:44:00 em valor valido para cálculos com horas?
desde ja agradeço
estou com um problema hoje que me surpreendeu e não sei como resolver..
faço uma soma de alguns horários e esse resultada eu comparo com um tempo padrão.
Citação:Dim HRATSO As TimeSpan
Dim HoraLimite As TimeSpan
If TimeSpan.TryParse(strSomaAtraso, HRATSO) Then [ô] aqui eu passo uma string para Timespan
End If
If TimeSpan.TryParse([Ô]0:15:00[Ô], HoraLimite) Then
End If
Dim resul As Integer = TimeSpan.Compare(HRATSO, HoraLimite) [ô] aqui comparo as horas
tudo funcionou bem, até uma hora acumular mas de 23:59... tenho um resultado que dá 25:44:00 que não consigo passar para Timespan, nem date, nem datetime..
qual variável devo utilizar? ou como converter 25:44:00 em valor valido para cálculos com horas?
desde ja agradeço
Pior que não, Altair, de todas as maneiras que fiz parra passar uma data acumulada ( Maior que 23:59:59) para as variaveis da erro!
Essa é a maior dificuldade de iniciantes: Dados compostos.
O que você provavelmente está fazendo é cálculo de perÃodos, a maioria das vezes, o perÃodo é menor de 24 horas então trabalhar com timespan funciona. Mas no seu caso, a soma é de perÃodos e para isso, você deve usar DateTime. é a melhor saÃda.
O que você provavelmente está fazendo é cálculo de perÃodos, a maioria das vezes, o perÃodo é menor de 24 horas então trabalhar com timespan funciona. Mas no seu caso, a soma é de perÃodos e para isso, você deve usar DateTime. é a melhor saÃda.
Klerplunk, eu devo estar fazendo algo muito.. mas muito idiota.. mas não consegui passar 25:44:00 para Datetime.
Eu tinha muitos problemas com o cálculo de horas, apartir do momento que passei a fazer eles direto no banco atraves de Procedures, ficou mil vezes mais prático, e sem falar que na velocidade aumentou bastante.
Citação::
Klerplunk, eu devo estar fazendo algo muito.. mas muito idiota.. mas não consegui passar 25:44:00 para Datetime.
E nem vai conseguir. Cada vez que você adicionar horas na variável de tipo DateTime, use o método AddHours, assim, quando passar de 24 horas, ele vira um dia e x horas...
Pois é gente!
ta complicado, a RH me pediu a pouco para fazer um modulozinho de cálculos de horas.
do tipo 35:45:00 + 8:48:00 ou 220:00:00 - 16:30:00
era pra ser algo muito simples.. 3 caixinha de texto, e 2 botoes.. 1 para adicionar outro para subtrair.
mas esta parecendo algo impossÃvel! não vejo maneiras de manipular datas cheias, não ha nenhuma variável que aceite a data com mais de 23:59:59 ...
se alguem tiver alguma ideia de como manipular esses valores, desde ja agradeço.
ta complicado, a RH me pediu a pouco para fazer um modulozinho de cálculos de horas.
do tipo 35:45:00 + 8:48:00 ou 220:00:00 - 16:30:00
era pra ser algo muito simples.. 3 caixinha de texto, e 2 botoes.. 1 para adicionar outro para subtrair.
mas esta parecendo algo impossÃvel! não vejo maneiras de manipular datas cheias, não ha nenhuma variável que aceite a data com mais de 23:59:59 ...
se alguem tiver alguma ideia de como manipular esses valores, desde ja agradeço.
1 - Desenhe o formulário com as caixas de texto, se quiser, podem ser com máscara mesmo
2 - Os cáculos com hora são bem simples:
2 - Os cáculos com hora são bem simples:
[ô]aqui busque a data inicial do cálculo, (ano, mês, dia)
[ô]lembre que estamos passando apenas a data, portanto vai iniciar à partir de 00:00:00 a hora
[ô]se quiser, pode também especificar a hora (ano, mês, dia, hora, minuto, segundo)
Dim hora As New DateTime(2013, 1, 29)
Dim horario As String = [Ô]35:49:55[Ô]
[ô]aqui busque da textbox de horas
Dim horarioSplit As String() = horario.Split([Ô]:[Ô]C).ToArray()
[ô]dividindo a hh:mm:ss
hora = hora.Add(New TimeSpan(Convert.ToInt32(horarioSplit(0)), Convert.ToInt32(horarioSplit(1)), Convert.ToInt32(horarioSplit(2))))
[ô]35 horas, 49 minutos e 55 segundos
[ô]ou
hora = hora.AddHours(Convert.ToDouble(horarioSplit(0)))
[ô]35
hora = hora.AddMinutes(Convert.ToDouble(horarioSplit(1)))
[ô]49
hora = hora.AddSeconds(Convert.ToDouble(horarioSplit(2)))
[ô]55
[ô]usando um dos dois métodos acima, você vai ter na variável [Ô]hora[Ô], a data de inÃcio acrescida de 35 horas, 49 minutos e 55 segundos
Valeu kerPlunk. é isso ai mesmo!
Tópico encerrado , respostas não são mais permitidas