2009-05-27 7 views
8

Comment puis-je soustraire deux dates lorsque l'une d'entre elles est nullable?TimeSpan utilisant une date nullable

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; 
} 

Répondre

9

Essayez ceci:

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

Jetez le datetime nullable comme datetime normal.

Si vous savez que ce n'est pas nul, alors la distribution fonctionnera correctement.

12

Pour soustraire deux dates lorsque zéro, un ou les deux est nullable vous venez de les soustraire. L'opérateur de soustraction fait la bonne chose; vous n'avez pas besoin d'écrire toute la logique qui est déjà dans l'opérateur de soustraction.

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