2009-05-27 12 views
8

¿Cómo puedo restar dos fechas cuando una de ellas puede contener nulos?TimeSpan usando una fecha que se puede anular

public static int NumberOfWeeksOnPlan(User user) 
{ 
    DateTime? planStartDate = user.PlanStartDate; // user.PlanStartDate is: DateTime? 

    TimeSpan weeksOnPlanSpan; 

    if (planStartDate.HasValue) 
     weeksOnPlanSpan = DateTime.Now.Subtract(planStartDate); // This line is the problem. 

    return weeksOnPlanSpan == null ? 0 : weeksOnPlanSpan.Days/7; 
} 

Respuesta

9

Prueba esto:

weeksOnPlanSpan = DateTime.Now.Subtract(planStartDate.Value); 
1

moldeada la fecha y hora anulable como una fecha y hora normal.

Si sabe que no es nulo, entonces el molde funcionará bien.

12

Para restar dos fechas cuando el cero, uno o ambos son nulos simplemente restarlos. El operador de resta hace lo correcto; no es necesario que escriba usted mismo toda la lógica que ya está en el operador de resta.

TimeSpan? timeOnPlan = DateTime.Now - user.PlanStartDate; 
return timeOnPlan == null ? 0 : timeOnPlan.Days/7; 
Cuestiones relacionadas