【发布时间】:2023-03-26 04:10:01
【问题描述】:
我有两个日期,其中一个字段是日期时间字段,另一个是可为空的日期时间字段。我想从日期 1 中减去 date2,如果 date2 为空,则从今天减去它。
我的代码:
型号:
public class SampleViewModel
{
public DateTime Date1 {get;set;}
public DateTime? Date2 {get;set;}
public int Diff {get;set;}
}
控制器动作:
public ActionResult Index()
{
var today = DateTime.Now;
SampleViewModel model = new SampleViewModel();
model.Date1=today;
model.Date2 = today.AddDays(5);
model.Diff = (model.Date1 - (model.Date2 != null ? model.Date2 : today)).Days;//Error
return View(model);
}
我收到编译错误
错误 CS1061“时间跨度?”不包含“Days”的定义,并且没有可访问的扩展方法“Days”接受“TimeSpan”类型的第一个参数?可以找到(您是否缺少 using 指令或程序集引用?)
我做错了什么?
【问题讨论】:
-
如果其中一个日期时间为空,结果应该是什么?
-
为什么它需要可以为空?你可以检查 DateTime = DateTime.MinValue
-
改用
model.Date2 ?? today。问题是当Date2不为空时,您仍然在计算中使用DateTime?,这会导致TimeSpan?。 -
尝试将
(model.Date2 != null ? model.Date2 : today)改为(model.Date2.HasValue ? model.Date2.Value : today)。 -
您可以添加可选导航
(task.DueDate - DateTime.Now)?.Days它应该可以正常工作
标签: c# asp.net-mvc datetime