10

当其中一个可以为空时,如何减去两个日期?

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

3 回答 3

14

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

TimeSpan? timeOnPlan = DateTime.Now - user.PlanStartDate;
return timeOnPlan == null ? 0 : timeOnPlan.Days / 7;
于 2009-05-27T15:58:36.030 回答
10

试试这个:

weeksOnPlanSpan = DateTime.Now.Subtract(planStartDate.Value); 
于 2009-05-27T09:25:05.497 回答
0

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

如果您知道它不为空,那么演员表将正常工作。

于 2009-05-27T09:25:33.220 回答