2013-07-29 10 views
6

Come posso verificare utilizzando qualche forma di if dichiarazione se un certo DateTime, (in questo caso chiamato dataAndTime1) è prima della data e ora correnti, che presumo verranno recuperate utilizzando DateTime.Now?Controllare se un DateTime è prima di DateTime.Ora

+0

http://msdn.microsoft.com/en-us/library/system.datetime.compare.aspx .. è un modo. Come altri hanno già sottolineato, anche i soliti operatori di confronto funzionano. –

+4

Cosa c'è di sbagliato in 'if (dateAndTime1

risposta

23
if(dateAndTime1 < DateTime.Now) 
{ 
    //do something 
} 
+0

Oh grazie, non mi rendevo conto che era così semplice – Newbie

3

il <, < =,>,> = e == operatori lavorano su casi DateTime, quindi

if(dateAndTime1 < DateTime.Now)

Si noti che se si stanno confrontando questo in un ciclo, qualche piccola efficienza può essere acquisita impostando DateTime now = DateTime.Now prima del ciclo e il confronto contro now

+1

per la tua nota: hai ragione tranne sul caso limite in cui è un processo a lunga esecuzione e 'ora' deve sempre essere il' DateTime.Now' immediato. Questo perché quando si imposta una variabile 'now', sarà stantia nei processi a lunga esecuzione ... come ho detto però," edge case ", e probabilmente raramente sperimentato. –

+0

Buon punto Chase – welegan

2
if(dateTime1 < DateTime.Now){} 
1

Inline w orchi anche.

// bool variable 
bool isHistory = dateAndTime1 < DateTime.Now; 

// string return statement 
return dateAndTime1 < DateTime.Now ? "History" : "Future"; 
+1

Giusto per il beneficio di tutti, il nome dell'espressione usata nell'esempio è un'espressione ternaria. – Jim

Problemi correlati