2009-09-11 24 views
11

Me gustaría saber si se pasa una hora específica del día. Realmente no me gusta la forma en que estoy haciendo:C# la mejor manera de comparar dos veces del día

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

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

¿Cómo estás?

Respuesta

24

¿Qué tal:

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

La sobrecarga de operadores es muy útil para la fecha y el tiempo de trabajo :) También podría considerar lo que es una propiedad en lugar de un método.

Es una leve pena que no es un

DateTime.CurrentTime 

o

TimeSpan.CurrentTime 

para evitar DateTime.Now.TimeOfDay es (al igual que no es DateTime.Today) pero por desgracia, no ...

I tiene un conjunto de métodos de extensión en int en MiscUtil que haría que la inicialización de _whenTimeIsOver sea más nítida. utilizar:

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

No es para todos los gustos, pero me gusta ...

+0

Bien, pensé que no podemos comparar el objeto DateTime y TimeSpan, me equivoqué. Me gusta la iniciación. – Toto

+2

@Duaner: No está comparando 'DateTime' con' TimeSpan'; está comparando dos 'TimeSpans'. La propiedad 'TimeOfDay' devuelve' TimeSpan'. –

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

1 por ser el primero. – Vadim

+4

+1 de alguna manera ser más rápido que Jon –

+0

Fui más rápido, pero mi respuesta inicial contenía un pequeño error :) –

Cuestiones relacionadas