Valida Hora usando C#

Olá pessoal, hoje eu vou falar como validar a hora usando a linguagem C# e a ferramenta Visual Studio criada pela Microsoft. Muitos não sabem fazer isso usando a linguagem C#, só saber fazer alguma máscara na partes da visualização mas é importante também validar dentro do código fonte antes de enviar os dados para o banco de dados por exemplo.

Então, para que saiba a melhor forma de fazer, faça:

  1. Valide na interface do usu√°rio;
  2. Valide também dentro do código antes de fazer o que precisa fazer.

Muitas vezes a hora vem junto com a data usando o tipo do dado chamado DateTime, acho que você já deve ter percebido isso. Com essa função, não importa a forma que passa os dados porque aqui iremos receber um objeto. Mas antes de qualquer coisa é bom verificar o que é hora inválida, hora nula e tudo mais.

Para fazer isso, crie constantes para melhor identificar dentro do seu projeto. O código 1.1 mostra a primeira constante criada onde será usada dentro de uma função.

 /// <summary>
/// Hora nula.
/// </summary>
public static readonly TimeSpan HORANULA = new TimeSpan(24, 0, 1);

Código 1.1 - Hora nula

No código 1.1 a constante de hora nula é criada, ou seja, esse valor representa uma hora nula que pode ser comparada dentro de alguma função. O próximo código 1.2 mostra outra constante para hora inválida.

/// <summary>
/// Representa uma hora inv√°lida.
/// </summary>
public static readonly TimeSpan HORAINVALIDA = new TimeSpan(24, 0, 2);

Código 1.2 - Hora inválida

No c√≥digo 1.2 mostra como representar uma hora inv√°lida. N√£o sei se sabe mas na programa√ß√£o existe uma diferen√ßa muito grande entre hora nula e hora inv√°lida, e para isso √© importante se atentar sobre a diferen√ßa desses dois par√Ęmetros. A minha ideia foi declarar esses par√Ęmetros antes de us√°-los dentro de um m√©todo ou fun√ß√£o. √Č importante analisar tamb√©m qual a sua prioridade dentro do sistema da sua empresa ou do seu cliente.

O próximo passo é criar uma função que recebe um objeto e testa os dados recebidos através das constantes declaradas anteriormente. Lembro que as contantes declaradas são feitas para serem usadas em qualquer parte do código. Veja o código 1.3.

    public static Bool validaHora(object value)
    {
    	try
        {
            var hora = (TimeSpan)value;

            if (hora == HORANULA)
            {
                return false;
            }

            return hora != HORAINVALIDA && hora.TotalDays < 1; //hora maior que 23:59:59
            
       }
       catch (InvalidCastException castInvalid)
       {
			 throw castInvalid;
       }
       catch(Exception ex)
       {
       	throw ex;
       }
    }

Código 1.3 - Método que valida a hora

Esse método recebe o valor e transforma em TimeSpan. O próximo passo é verificar se a hora é nula, se for nula ele retorna false. Ao contrário, ele verifica se a hora é diferente da horário inválida e junto da variável hota ele verificar a quantidade de dias menor que 1, isso garante que a hora informada não seja maior que 23:59:59 horas.

Em caso de erro de cast √© retornado e se der qualquer outro tipo de erro √© retornado tamb√©m. Espero que tenha ajudado e qualquer d√ļvida por favor entre em contato pelo site https://www.mauriciojunior.net.