Usuário com melhor resposta
Apanhando com data

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;
}
}
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
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
-
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