2009-09-11 13 views
11

Chciałbym wiedzieć, czy upłynęła określona pora dnia. Naprawdę nie podoba mi się sposób, w jaki robię:C# najlepszy sposób porównania dwóch porach dnia

private static readonly TimeSpan _whenTimeIsOver = new TimeSpan(16,25,00); 

internal static bool IsTimeOver() 
{ 
    return DateTime.Now.TimeOfDay.Subtract(_whenTimeIsOver).Ticks > 0; 
} 

Jak się masz?

Odpowiedz

24

Jak o:

internal static bool IsTimeOver() 
{ 
    return DateTime.Now.TimeOfDay > _whenTimeIsOver; 
} 

Operator przeciążenie jest bardzo pomocne dla daty i czasu pracy :) Można też rozważyć co właściwość zamiast metody.

To niewielka szkoda, że ​​tam nie

DateTime.CurrentTime 

lub

TimeSpan.CurrentTime 

uniknąć DateTime.Now.TimeOfDay jest (podobnie jak nie DateTime.Today), ale niestety, nie ...

I mieć zestaw metod rozszerzających na int w MiscUtil, który sprawi, że inicjalizacja _whenTimeIsOver będzie lepsza - używać:

private static readonly TimeSpan _whenTimeIsOver = 16.Hours() + 25.Minutes(); 

To nie jest do gustów każdego z nas, ale lubię go ...

+0

Ok myślałem, że nie możemy porównać obiektu DateTime i TimeSpan, myliłem się. Podoba mi się inicjalizacja. – Toto

+2

@Duaner: Nie porównujesz 'DateTime' z' TimeSpan' - porównujesz dwie "TimeSpany". Właściwość 'TimeOfDay' zwraca' TimeSpan'. –

14
if (DateTime.Now.TimeOfDay > _whenTimeIsOver) 
    .... 
+0

+1 do bycia pierwszym. – Vadim

+4

+1 jakoś szybciej niż Jon –

+0

Byłem szybszy, ale moja początkowa odpowiedź zawierała mały błąd :) –

Powiązane problemy