C# 计算期望双精度的日期

C# 计算期望双精度的日期,c#,asp.net,C#,Asp.net,我试图简单地减去两个日期。也许这是一种混乱的做法。它说它不能转换成双倍,即使 DateTime daysPlus14days = _dal.getOptinDate(new Guid(_myuser.id.ToString())).AddDays(14); DateTime currentDate = DateTime.Now; DateTime timeLeft = (daysPlus14days - currentDate).TotalDays 这基本上就是转到db,并得到他们在那里创建帐

我试图简单地减去两个日期。也许这是一种混乱的做法。它说它不能转换成双倍,即使

DateTime daysPlus14days = _dal.getOptinDate(new Guid(_myuser.id.ToString())).AddDays(14);
DateTime currentDate = DateTime.Now;
DateTime timeLeft = (daysPlus14days - currentDate).TotalDays
这基本上就是转到db,并得到他们在那里创建帐户的日期。这只是为了计算出他们还有多少天,14天点击一个按钮,否则它就会消失

public DateTime getOptinDate(Guid id)
{
    var q = _dal.portalEntities.tblPortalUsers.Where(a => a.id == id).FirstOrDefault();
    return (DateTime)q.optinDateStart;          
}
只需更改这一行:

double timeLeft = (daysPlus14days - currentDate).TotalDays;
TotalDays
返回双倍而非
DateTime

请参阅此链接


为什么不使用TimeSpan?请参阅;时间跨度t;t、 TotalDays给出总天数。另外,请注意当地时间与UTC的对比。我工作过,它给了我12.5天的时间,但如果日期是昨天,它的时间应该是13.5天,这很奇怪,我将日期存储在db中,作为2016-07-07,我认为应该是13,但我担心是在下午12点左右,考虑了半个小时day@david试试看
daysPlus14days.Date
System.DateTime date1 = new System.DateTime(1996, 6, 3, 22, 15, 0);
System.DateTime date2 = new System.DateTime(1996, 12, 6, 13, 2, 0);
System.TimeSpan diff1 = date2.Subtract(date1);
double totaldays = diff1.TotalDays;