COMPARAR HORAS

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

COMPARAR HORAS

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#477706 - 08/11/2017 11:46:29

ELMO01
BELO HORIZONTE
Cadast. em:Agosto/2004


Oi pessoal,

Estou tentando comparar dois horários diferentes sendo que um se inicia em um dia e termina no outro. Fiz as seguintes linhas de comando:

Dim A1 As DateTime = DateTime.Parse(Me.MsK_Hora.Text) -> Hora Inicial
Dim A2 As DateTime = DateTime.Parse(MksFinal.Text)          -> Hora final
  While A1 >= A2
            Dim Conn3 As New MySqlConnection(StrServ)
            Conn3.Open()
            Dim Campos3 As String
            Dim Valores3 As String
            Campos3 = "(COD_DIAS, COD_DESC, Hora)"   ' Variáveis do Banco de Dados - MYSQL
            Valores3 = "(@COD_DIAS, @COD_DESC, @Hora)"
            Dim cSQL3 As String = "INSERT INTO tec_diasdados " & Campos3 & " VALUES " & Valores3
            Dim Cmd3 As New MySqlCommand(cSQL3, Conn3)
            Cmd3.Parameters.AddWithValue("@COD_DIAS", NewRonda).ToString()
            Cmd3.Parameters.AddWithValue("@COD_DESC", Me.Txt_Ronda2.Text).ToString()
            Cmd3.Parameters.AddWithValue("@Hora", Mid(A1, 12, 5)).ToString()
            Cmd3.ExecuteNonQuery()
            Conn3.Close()
            A1 = A1.Add(TimeSpan.Parse(Msk_Minu3.Text)).ToString-> adicionando minutos no hora inicial
    End While

Mais estou com problemas, quando a variável A1(Hora Inicial) é maior que a A2(Hora Final) o WHILE teria que terminar mais o que está acontecendo é que o mesmo está entrando em um LOOP e não sai.

Alguém pode me indicar o que estou fazendo de errado para que este comando não sai.

Obrigado.






elmo

Resposta escolhida #477719 - 08/11/2017 14:47:08

JABA
CABO FRIO
Cadast. em:Agosto/2005


Se é preciso sair do WHILE quando o A1 é maior do que A2, então você teria que inverter a ordem dos operadores. Ou seja, em vez de ser While A1 >= A2, teria que ser While A1 <= A2.

_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#477740 - 09/11/2017 08:03:39

ELMO01
BELO HORIZONTE
Cadast. em:Agosto/2004


Jaba fiz o que vc me propôs mais não funcionou, co While continua em LOOP, mais agora já sei o pq, estou utilizando a instrução DateTime.Parse onde aparece a data e o horário, mais como sabemos, a data começa em um dia e termina no outro, assim sendo, dá erro não no horário mais sim na data. Tenho que achar uma maneira de verificar somente o horário e não a data mais o horário. Se vc ou outra pessoa daqui do forum poder me ajudar ou se tiver outra ideia que possam me passar será bem vinda.

Obrigado.

elmo

#477748 - 09/11/2017 13:16:59

NOWLIGHTS
SUMARE
Cadast. em:Abril/2011


Última edição em 09/11/2017 13:18:40 por NOWLIGHTS

Tenta usar TimeSpan

__________________________________
- Everyone has a chance

#477749 - 09/11/2017 13:32:20

JABA
CABO FRIO
Cadast. em:Agosto/2005


Última edição em 09/11/2017 13:35:14 por JABA

Utilize um TimeSpan para isso:

        Dim h1 As TimeSpan
        Dim h2 As TimeSpan

        h1 = TimeSpan.Parse("00:30:00")
        h2 = TimeSpan.Parse("00:10:00")

        If (h1 > h2) Then
            MsgBox(h1.ToString())
        Else
            MsgBox(h2.ToString())
        End If


_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#477835 - 14/11/2017 08:36:37

ELMO01
BELO HORIZONTE
Cadast. em:Agosto/2004


Última edição em 14/11/2017 08:38:26 por ELMO01

Jaba, testei o que vc me propôs mais inda não está dando certo,.
por exemplo tenho A1=19:00 e A2=07:00, em A1 faço o acréscimo de 00:30 até atingir o mesmo horário de A2, mais quando A1 chega no horário de 00:00 a mesma fica assim 1.00:30:00 e  A2=07:00, ao fazer o teste entre  A1 >= A2 dá se o erro pq A1=1.00:30:00 e A2 = 07:00:00.
Tem algum modo que A1 = 00:30 ao invés de 1.00:30:00

Faço o acréscimo de 00:30 assim:
A1 = 19:00
A2 = 07:00
Msk_Minu3.Text = 00:30

A1 = A1 + TimeSpan.Parse(Msk_Minu3.Text)

Obrigado


elmo

#477838 - 14/11/2017 10:49:26

LVFIOROT
SERRA
Cadast. em:Março/2012


para compara horas de dias distintos é necessario a data!



#477842 - 14/11/2017 13:12:57

JABA
CABO FRIO
Cadast. em:Agosto/2005


Se a diferença for sempre de um dia, então você pode fazer assim:

dotnetfiddle.net/KCZSjN

OBS: Repare que só sai do loop quando A1 fica maior do que A2

_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#477856 - 14/11/2017 21:24:44

ELMO01
BELO HORIZONTE
Cadast. em:Agosto/2004


Valeu pessoal pela ajuda
deu certo.

Obrigado

elmo

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


Tópico encerrado, respostas não sao permitidas
Encerrado por ELMO01 em 14/11/2017 21:24:54