Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用可空日期的时间跨度_C#_Datetime_.net 2.0_Nullable - Fatal编程技术网

C# 使用可空日期的时间跨度

C# 使用可空日期的时间跨度,c#,datetime,.net-2.0,nullable,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 = Dat

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

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;
}
试试这个:

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

将可为空的datetime强制转换为普通datetime


如果你知道它不是空的,那么转换就可以了。

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

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