Usuário com melhor resposta
Dúvida com comparação de horas

Pergunta
-
Boa Noite!
Como comparo horas quando preciso, por exemplo comparar 00:00>23:30, pois quando tenho que fazer esse tipo de comparação 23:00 é maior que meia-noite. Como se resolve esse problema com comparações de horas quando for meia-noite?
Agradeço pela ajuda.
Respostas
-
Boa tarde Paula,
Sugiro que você verifique nesses links algumas formas de você fazer com que o horário seja comparado da melhor forma para você. Pois como o nosso amigo Maicon falou, 00:00 é a primeira hora do dia, então sempre será menor que qualquer outro horário, logo 23:59 é o limite para o dia atual, passando disso já se trata de outro dia. Talvez seja melhor você incluir a data na comparação juntamente com a hora, nos links abaixo você encontrará esse tipo de informação.
http://forums.asp.net/t/1025431.aspx?How+to+compare+Time+in+C+
Caso não consiga solucionar, desmarque a resposta e nos envie mais detalhes que continuaremos ajudando.
Obrigado,
Abraço!
Eduardo Romero
Esse conteudo e fornecido sem garantias de qualquer tipo, seja expressa ou implicita.
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais facil para os outros visitantes encontrarem a resolucao mais tarde.- Sugerido como Resposta Eduardo.RomeroModerator quinta-feira, 16 de abril de 2015 19:45
- Marcado como Resposta Eduardo.RomeroModerator quinta-feira, 16 de abril de 2015 19:45
- Não Marcado como Resposta Paula Segatelli terça-feira, 21 de abril de 2015 18:04
- Marcado como Resposta Paula Segatelli terça-feira, 21 de abril de 2015 18:05
Todas as Respostas
-
Boa noite Paula Segatelli,
Então, respondendo sua pergunta, Meia Noite sempre vai ser menor que 23:00, até mesmo 23:59.
Leva em consideração que, a primeira hora do dia é 00:00 e a última 23:59.
O que você pode fazer é comparar a hora e a data:
//faz uma verificação para ver se a horaASerComparada é menor que a hora atual //Caso a hora seja menor, iremos comparar as datas, senão a hora é maior if (horaASerComparada < horaAtual) { if(dataAtual > dataASerComparada) { } } else { }
Claro que, isso depende de alguns ajustes, de acordo com sua necessidade, mas tenta entender esse processo e ajustar a comparação necessária.
Caso a resposte ajude, favor marcar como resposta.
Se não conseguir questione novamente.
Abraços
- Editado Maicon Cipriani terça-feira, 14 de abril de 2015 11:13
- Sugerido como Resposta Eduardo.RomeroModerator terça-feira, 14 de abril de 2015 12:22
-
Boa Tarde, Maicon!
Obrigada pela ajuda!
O projeto é uma tarefa que funciona a cada meia hora. Entretanto, o periodo das 23:31 a 00:00 dá erro
por causa dessa problema da comparação da hora.
Primeiro verifico a hora, comparando a dataAtual com a dataPassada e depois o processo continua dependendo do retorno.
Fiz como está abaixo, mas tem uma maneira de fazer isso sem precisar definir as horas?
//if hora atual for maior que a hora obtida
if (ConvHoraAtual.ToShortTimeString() == "00:00")
{
//VERIFICAR SE AS HORAS ESTAO ENTRE 23:31 A 00:00
DateTime intervaloC = Convert.ToDateTime("23:31");
DateTime intervaloB = Convert.ToDateTime("23:59");
DateTime intervaloD = Convert.ToDateTime("00:00");if ((ConvSoma.TimeOfDay > intervaloC.TimeOfDay && ConvSoma.TimeOfDay < intervaloB.TimeOfDay) ||
ConvSoma.TimeOfDay == intervaloB.TimeOfDay || ConvSoma.TimeOfDay == intervaloC.TimeOfDay ||
ConvSoma.TimeOfDay == intervaloD.TimeOfDay)
retornoBool = true;
else
retornoBool = false;
}else
{
if (ConvHoraAtual.TimeOfDay > ConvSoma.TimeOfDay)
//retorno recebe true
retornoBool = true;
} -
-
Boa Noite, Maicon!
Eu queria saber se tem como melhorar o código que fiz abaixo.
Eu preciso comparar as horas e não tem como usar a data.
Preciso comparar HoraAtual com HoraRecebida para verificar se a HoraRecebida é menor que a HoraAtual.
Mas, tenho o problema da meia noite e também da 23 horas (ao comparar 00:00 com 23:00).
Como posso melhorar isso?
DateTime intervaloD = Convert.ToDateTime("00:00");
DateTime intervaloE = Convert.ToDateTime("00:59");
DateTime intervaloG = Convert.ToDateTime("23:31");
DateTime intervaloH = Convert.ToDateTime("23:59");
if (ConvSoma.TimeOfDay <= ConvHoraAtual.TimeOfDay)
{
//VERIFICAR SE AS HORAS ESTAO ENTRE 00:00 A 00:59
if ((ConvSoma.TimeOfDay >= intervaloD.TimeOfDay && ConvSoma.TimeOfDay <= intervaloE.TimeOfDay) &&
(ConvHoraAtual.TimeOfDay >= intervaloD.TimeOfDay && ConvHoraAtual.TimeOfDay <= intervaloE.TimeOfDay))
retornoBool = true;
else
{
if (ConvHoraAtual.TimeOfDay >= ConvSoma.TimeOfDay &&
!(ConvHoraAtual.TimeOfDay >= intervaloD.TimeOfDay && ConvHoraAtual.TimeOfDay <= intervaloE.TimeOfDay) &&
!(ConvSoma.TimeOfDay >= intervaloD.TimeOfDay && ConvSoma.TimeOfDay <= intervaloE.TimeOfDay))
retornoBool = true;
}
}
else
{
if (ConvHoraAtual.TimeOfDay == intervaloD.TimeOfDay &&
(ConvSoma.TimeOfDay >= intervaloG.TimeOfDay && ConvSoma.TimeOfDay <= intervaloH.TimeOfDay))
retornoBool = true;
} -
Boa tarde Paula,
Sugiro que você verifique nesses links algumas formas de você fazer com que o horário seja comparado da melhor forma para você. Pois como o nosso amigo Maicon falou, 00:00 é a primeira hora do dia, então sempre será menor que qualquer outro horário, logo 23:59 é o limite para o dia atual, passando disso já se trata de outro dia. Talvez seja melhor você incluir a data na comparação juntamente com a hora, nos links abaixo você encontrará esse tipo de informação.
http://forums.asp.net/t/1025431.aspx?How+to+compare+Time+in+C+
Caso não consiga solucionar, desmarque a resposta e nos envie mais detalhes que continuaremos ajudando.
Obrigado,
Abraço!
Eduardo Romero
Esse conteudo e fornecido sem garantias de qualquer tipo, seja expressa ou implicita.
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais facil para os outros visitantes encontrarem a resolucao mais tarde.- Sugerido como Resposta Eduardo.RomeroModerator quinta-feira, 16 de abril de 2015 19:45
- Marcado como Resposta Eduardo.RomeroModerator quinta-feira, 16 de abril de 2015 19:45
- Não Marcado como Resposta Paula Segatelli terça-feira, 21 de abril de 2015 18:04
- Marcado como Resposta Paula Segatelli terça-feira, 21 de abril de 2015 18:05
-