TimeSpan使用可以为空的日期

时间:2009-05-27 09:23:30

标签: c# datetime .net-2.0 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;
}

3 个答案:

答案 0 :(得分:13)

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

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

答案 1 :(得分:11)

试试这个:

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

答案 2 :(得分:1)

将可空日期时间转换为正常日期时间。

如果你知道它不是null,则转换将正常工作。