Próbuję uzyskać alert, gdy klient ma urodziny w ciągu najbliższych 7 dni.Porównaj DateTime bez roku
Próbowałem go z tym kodem:
public bool IsBirthdayImminent
{
get { return DateOfBirth != null && DateOfBirth.Value.Date >= DateTime.Today.Date.AddDays(-7); }
}
Oczywiście to nie zadziała, a data jest przechowywana z jej roku (słownie 05/21/1980) i porównuje również rok . Więc to zapytanie nigdy nie będzie true
- cóż, nie, jeśli urodziłeś się w ciągu następnych siedmiu dni.
Jak zmienić to zapytanie, aby zignorować rok?
Edit:
porządku, sama kwerenda nie jest w ogóle problem. Moim głównym celem jest radzenie sobie z latami przestępnymi i sytuacjami około grudnia < -> stycznia.
Spróbuj: DateOfBirth.Value.Date> = DateTime.Today.Date.AddYears (DateOfBirth.Value.Date.Year - DateTime.Today.Date.Year) .AddDays (-7) – NeverHopeless
Normalizuj obie daty: utwórz kopię wartości DOB i ustawić rok na taki sam jak rok bieżący. Teraz będziesz porównywać jabłka z jabłkami. – Icarus
@Idle_Mind Może to nie mieć problemów z latami przestępnymi? Jeśli na przykład jedna z dat to 29 lutego 1996 r., A Ty spróbujesz ustawić ją na 29 lutego 2013 r., Możesz nie uzyskać pożądanego rezultatu. To samo dotyczy wszelkich innych różnic między datami na przestrzeni lat. – Servy