TimeSpan使用可以为空的日期

cda*_*a01 10 c# datetime nullable .net-2.0

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

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;
}
Run Code Online (Sandbox Code Playgroud)

Eri*_*ert 13

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

TimeSpan? timeOnPlan = DateTime.Now - user.PlanStartDate;
return timeOnPlan == null ? 0 : timeOnPlan.Days / 7;
Run Code Online (Sandbox Code Playgroud)


Jak*_*sen 11

试试这个:

weeksOnPlanSpan = DateTime.Now.Subtract(planStartDate.Value); 
Run Code Online (Sandbox Code Playgroud)