🔥 Apps, books, system as a service, podcast and more



Comparar Hora Atual com Hora Inicial e Hora Final

Caro(a) Leitor(a), hoje eu vou mostrar de forma simples como comparar a hora atual com a hora retornada do banco de dados. Não é apenas a hora atual, é o intervalo de hora inicial e hora final com a hora atual. Não vou mostrar como ir ao banco de dados nem nada, vou focar mais na funcionalidade.

O grande problema é que, no banco de dados são gravados apenas os números sem os dois pontos no meio. 

Utilizado
Ferramenta Visual Studio 2012
Linguagem de programação C#
Tipo de projeto: Web ou Form

A informação que retorna do banco de dados é o valor da hora sem os dois pontos, por exemplo: 0800 (esse valor quer dizer oito horas). No banco de dados, existe o valor inicial e final.

Esse valor é verificado antes de fazer qualquer outro procedimento. Para que o procedimento seja feito, o horário precisa estar entre 0800 horas e 1200 horas; isto é; precisa ser feito uma comparação entre as horas retornadas e a hora atual.

Existem duas formas de fazer essa comparação de hora. Lembre-se que alguns programadores gostam de utilizar o comando TimeStamp mas neste caso escolhi fazer de outra maneira. Listagem 1.

Listagem 1 – Método Load
private void Form1_Load(object sender, EventArgs e)
{
String _horaini = "0800";

       String _horafim = "1143";

       String _horaAgora = DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString();
}

Para este exemplo, resolvi mostrar no método “load” como fazer todo o processo de comparação. Note que na listagem 1, eu tenho as variáveis de “_horaini”, “_horafim” e “_horaAgora”.

Na variável “_horaini” tenho o valor “0800”, “_horafim” tenho o valor “1143” e na “_horaAgora” o valor da hora atual.

Depois de pegar estes valores é necessário fazer a comparação da hora de agora com a hora da variável. Essa hora inicial e final pode ser pega diretamente do banco de dados.


Primeira forma de comparação
A primeira forma de comparação eu fiz utilizando “parse” com maior, igual e menor. Listagem 2.

Listagem 2 – Primeira comparação

if (int.Parse(_horaAgora) >= int.Parse(_horaini) && int.Parse(_horaAgora) <= int.Parse(_horafim))
{
//executa o procedimento
}

Se a hora agora for maior ou igual à hora inicial, e for menor ou igual a hora final, então eu posso chamar o procedimento ou exibir uma mensagem para o cliente.

Segunda forma de comparação

A segunda forma de comparação utilizei o comando “CompareTo” da própria “String” do “Framework” Microsoft. Fica bem mais simples de fazer só que um pouco mais complicado de entender.
Mas com o que vou falar aqui fica simples de entender. Listagem 3.

Listagem 3 – Segunda comparação

if (_horaAgora.CompareTo(_horaini) > -1 && _horaAgora.CompareTo(_horafim) < 1)
{
//chama algum procedimento
}

Note que o comando foi feito a partir da hora agora em vez da hora inicial. Comparei a hora agora com a hora inicial, se for maior que -1 e for menor que 1 então ele chama o procedimento.

Esse método “CompareTo” retorna sempre um número entre as comparações: -1, 0 e 1. Quando o método retorna -1, quer dizer que o valor é menor do que o comparado. Quando retorna 0, quer dizer que o valor comparado é igual. Quando retorna 1 o valor é maior do que o comparado.

Isso é bem simples. Utilizando esse entendimento, eu fiz a segunda comparação utilizando apenas um “if” com duas verificações, enquanto que na listagem 2 foram feitas várias verificações.

No nosso caso, a hora tem que estar entre 08:00 horas e 11:30 horas, se tiver neste intervalo, então ele executa o que tem que ser executado. Na listagem 4 eu mostro todo o código feito. 

Listagem 4 – Todo o código

private void Form1_Load(object sender, EventArgs e)
{
String _horaini = "0800";

       String _horafim = "1143";

       String _horaAgora = DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString();

//primeira comparacao
       if (int.Parse(_horaAgora) >= int.Parse(_horaini) && int.Parse(_horaAgora) <= int.Parse(_horafim))
       {
        MessageBox.Show("A hora está entre os valores");
 }

//segunda comparacao
        if (_horaAgora.CompareTo(_horaini) > -1 && _horaAgora.CompareTo(_horafim) < 1)
        {
        MessageBox.Show("A hora está entre os valores");
 }
}

Bom, espero que tenha gostado e qualquer dúvida pode entrar em contato pelo site pessoal www.mauriciojunior.org

Sign up to our newsletter

Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.

Top