2011-09-09 13 views

Respuesta

14

Éstos son mi toma:

var isTimeNull = myDateTime.Date == myDateTime; 
var isTimeNull = myDateTime.TimeOfDay.TotalSeconds == 0; 

Y técnicamente, el tiempo no es nulo, simplemente no está establecido.

+0

Gracias Anton y déjame intentar esto. – JKK

+5

¿Cómo es eso diferente de ser la medianoche? –

+0

Fui con la lógica myDateTime.TimeOfDay.TotalSeconds. En mi caso, tengo 2 fechas (fecha de inicio y fecha de finalización). En función de si el componente de tiempo está lleno, cambio la función Oracle to_date(). Funciona como un amuleto en todos los casos excepto en uno donde el usuario intenta buscar registros exactamente a la medianoche (12 AM) en ambos valores de fecha. Gracias Anton. – JKK

1

Para evitar divisiones y problemas de punto flotante de precisión usar:

var isMidnight = myDateTime.TimeOfDay.Ticks == 0; 
13

Me parece muy legible:

var isTimeNull = (myDateTime.TimeOfDay == TimeSpan.Zero); 
+0

Gracias - es mejor que ' .ToString.Equals ("00:00:00") ':) –

+0

Esto comprueba si es cero, que es un concepto diferente a algo que es nulo – thelem

0

DateTime no es compatible con el concepto de nulo para sólo el componente de tiempo. O el objeto DateTime completo es nulo (si usa la versión que admite nulos), o tanto la fecha como la hora no son nulas. Si no especifica el componente de tiempo, se configurará por defecto en 0 (medianoche).

Cuestiones relacionadas