2009-05-27 53 views
8

如何减去两个日期中的一个可为空?TimeSpan使用可空日期

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

回答

9

试试这个:

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

演员可为空的日期时间作为一个正常的日期时间。

如果您知道它不是null,那么演员表将会正常工作。

12

要减去两个日期时零,其中一个或两个是可以为空你只需要减去它们。减法操作符做正确的事情;您不需要自己编写已经在减法运算符中的所有逻辑。

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