2012-06-18 11 views
27

Powiel możliwe:
How to compare Dates in C#Jak przetestować dwa terminy dateTimes na tę samą datę?

Ten kod kopalni:

public static string getLogFileNameForDate(DateTime dt) 
{ 
    if (dt.Equals(DateTime.Now)) 

... nie, nawet gdy te dwie daty są takie same (data), ponieważ jest dt przypisano wartość przy starcie (np. "6/18/2012 15:19:42"), więc daty nie są dokładnie takie same, mimo że rok, miesiąc i dzień są takie same (wartość DateTime . Teraz może być na przykład "6/18/2012 15:30:13").

wiem, że mogę przetestować go w ten sposób:

if ((dt.Year.Equals(DateTime.Now.Year) && (dt.Month.Equals(DateTime.Now.Month) && (dt.Day.Equals(DateTime.Now.Day)) 

... ale to wydaje się nieco Jethro * -jak

Co jest (no pun przeznaczone) przyjętą/preferowaną metodą?

  • Clampett nie Tull
+1

dt.Date.CompareTo (DateTime.Now.Date) == 0 powinno załatwić sprawę. – dash

+2

Aha, i http://stackoverflow.com/questions/683037/how-to-compare-dates-in-c-sharp – dash

+0

@dash: Wygląda na to, że potrzebujesz mitycznej odznaki "Seeing Double" dla tych dupek, które ciągle odnajdujesz . –

Odpowiedz

76

Spróbuj

if (dt.Date == DateTime.Now.Date) 

To zajmie tylko część daty i datownik będzie 12:00:00

+7

Zakładam możesz także zrobić "dt.date == DateTime.Today" – Rippo