none
Apanhando com data RRS feed

  • Pergunta

  • Tenho um componente que quando eu limpo a data nele, ele vem com o campo vazio, porem dentro dele existe a seguinte data:

    01/01/0001 00:00:00

    Preciso comparar essa data, forma que se ser ela, setou uma variável bool para true. O Problema que eu não sei fazer isso, ou seja, estou apanhando, porque essa data é uma propriedade de um objeto que eu tenho. Isso tudo está em uma expressão lambda. Veja como está e até onde eu consegui andar.

    bool _IsValor;

                var propriedades = filtro.GetType().GetProperties();

                propriedades.ToList().ForEach(n => 
                {
                    var valor = n.GetValue(filtro, null);

                    if ((Int64)valor > 0 || (valor as DateTime?).Value.)
                    { }
                });

    filtro é o Objeto desse cara aqui.

    ListaRecursosGlosaOperadoraFiltro filtro = new ListaRecursosGlosaOperadoraFiltro();

    public class ListaRecursosGlosaOperadoraFiltro
        {
            public long IdPrestador { get; set; }
            public DateTime DataPeriodoInicial { get; set; }
            public DateTime DataPeriodoFinal { get; set; }
            public long IdLote { get; set; }
            public long IdRecurso { get; set; }
            public string NumLote { get; set; }
            public string NomeOperadora { get; set; }

            public Boolean ValidaPeriodoData 
            {
                get { return DataPeriodoFinal.Subtract(DataPeriodoInicial).TotalDays <= 31 && DataPeriodoFinal.Subtract(DataPeriodoInicial).TotalDays >= 1; }
            }

            public void Limpar()
            {
                IdPrestador = 0;
                IdLote = 0;
                IdRecurso = 0;
                NumLote = string.Empty;
                NomeOperadora = string.Empty;
            }

        } 


    quinta-feira, 21 de novembro de 2013 16:44

Respostas


  • Sempre que você instanciar um objeto o valor default de um DateTime será DateTime.MinValue, ou seja, o 01/01/0001 00:00:00.

    Existe uma forma de deixar o valor default como Null, que écolocando uma interroção na frente.

    public DateTime? DataPeriodoInicial { get; set; }

    Comparação para os casos de 01/01/0001 00:00:00:

    bool isNull = (filtro.DataPeriodoFinal == DateTime.MinValue);

    • Sugerido como Resposta Fulvio Cezar Canducci Dias sábado, 23 de novembro de 2013 19:21
    • Marcado como Resposta pnet segunda-feira, 25 de novembro de 2013 12:15
    sábado, 23 de novembro de 2013 13:34

Todas as Respostas

  • pnet, para comparar datas do tipo DateTime como a sua basta você efetuar uma comparação "crua":

    datetime dataTeste1 = DateTime.Now;
    
    datetime dataTeste2 = "01/01/0001 00:00:00";
    
    if(dataTeste2 ==  "01/01/0001 00:00:00")
    {
        bool teste = true;
    }
    
    if(dataTeste1 > dataTeste2)
    {
        bool verdadeiro = true;
    }

    O tipo DateTime te dá essa possibilidade facilmente da manipulação das datas. 

    Espero que ajude. 

    Abraço.


    Voce pode encarar um erro como uma besteira a ser esquecida, ou como um resultado que aponta uma nova direcao by Steve Jobs

    sexta-feira, 22 de novembro de 2013 11:50

  • Sempre que você instanciar um objeto o valor default de um DateTime será DateTime.MinValue, ou seja, o 01/01/0001 00:00:00.

    Existe uma forma de deixar o valor default como Null, que écolocando uma interroção na frente.

    public DateTime? DataPeriodoInicial { get; set; }

    Comparação para os casos de 01/01/0001 00:00:00:

    bool isNull = (filtro.DataPeriodoFinal == DateTime.MinValue);

    • Sugerido como Resposta Fulvio Cezar Canducci Dias sábado, 23 de novembro de 2013 19:21
    • Marcado como Resposta pnet segunda-feira, 25 de novembro de 2013 12:15
    sábado, 23 de novembro de 2013 13:34