2009-09-11 11 views
11

Mi piacerebbe sapere se viene passato un determinato orario del giorno. Non mi piace il modo in cui sto facendo:C# modo migliore per confrontare due ore del giorno

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

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

Come si fa?

risposta

24

ne dite:

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

overloading degli operatori è molto utile per la data e l'ora di lavoro :) Si potrebbe anche prendere in considerazione che lo rende una proprietà invece di un metodo.

E 'un leggero peccato che non un

DateTime.CurrentTime 

o

TimeSpan.CurrentTime 

per evitare DateTime.Now.TimeOfDay c'è (proprio come c'è DateTime.Today) ma ahimè, no ...

I avere un set di metodi di estensione su in MiscUtil che renderebbe l'inizializzazione di _whenTimeIsOver più ordinata - tu avresti utilizzare:

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

Non è per tutti i gusti, ma mi piace ...

+0

Ok pensato che non possiamo confrontare DateTime e TimeSpan oggetto, ho sbagliato. Mi piace l'inizializzazione. – Toto

+2

@Duaner: non stai confrontando 'DateTime' con' TimeSpan' - stai confrontando due 'TimeSpans'. La proprietà 'TimeOfDay' restituisce' TimeSpan'. –

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

+1 per essere i primi. – Vadim

+4

+1 per essere in qualche modo più veloce di Jon –

+0

Ero più veloce, ma la mia risposta iniziale conteneva un piccolo errore :) –

Problemi correlati