2009-05-27 12 views
8

Wie kann ich zwei Daten abziehen, wenn eine von ihnen nullfähig ist?TimeSpan mit einem Nullable-Datum

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

Antwort

9

Try this:

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

Guss den Nullable-Datetime als normale Datumzeit.

Wenn Sie wissen, dass es nicht null ist, dann wird die Besetzung gut funktionieren.

12

Um zwei Daten zu subtrahieren, wenn Null, eins oder beide Nullwerte sind, subtrahieren Sie sie einfach. Der Subtraktionsoperator macht das Richtige; Sie müssen nicht die gesamte Logik selbst schreiben, die bereits im Subtraktionsoperator enthalten ist.

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