Sto cercando di ottenere un avviso quando un cliente ha il compleanno entro i prossimi 7 giorni.Confronto DateTime senza anno
ho provato con questo codice:
public bool IsBirthdayImminent
{
get { return DateOfBirth != null && DateOfBirth.Value.Date >= DateTime.Today.Date.AddDays(-7); }
}
Naturalmente questo non funziona, come la data è memorizzata con il suo anno (diciamo 1980/05/21) e si confronta anche l'anno . Quindi questa query non sarà mai true
- beh, non se sei nato entro i prossimi sette giorni però.
Come posso modificare questa query per ignorare l'anno?
Edit:
Va bene, la query per sé non è affatto un problema. Il mio punto principale è la gestione degli anni bisestili e delle situazioni intorno a dicembre < -> gennaio.
Prova: DateOfBirth.Value.Date> = DateTime.Today.Date.AddYears (DateOfBirth.Value.Date.Year - DateTime.Today.Date.Year) .AddDays (-7) – NeverHopeless
Normalizza entrambe le date: crea una copia del valore DOB e impostare l'anno per essere uguale all'anno corrente. Ora paragonerai le mele alle mele. – Icarus
@Idle_Mind Potresti non avere problemi con gli anni bisestili? Se, ad esempio, una delle date è il 29 febbraio 1996 e si tenta di impostarla al 29 febbraio 2013, è possibile che non si ottenga il risultato desiderato. Lo stesso vale per qualsiasi altra differenza tra le date nel corso degli anni. – Servy