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;