2011-06-06 33 views
0

有人能告诉我如何投射System.Timespan?到System.Timespan 试着获取当前日期和LINQ查询日期间的时间差,当我不断收到此错误(见belwo)如何投射到System.Timespan?

System.TimeSpan ts = i.joinDt - DateTime.Now.Date; 

回答

6
System.TimeSpan ts = (i.joinDt - DateTime.Now.Date).Value; 
+0

我建议'System.TimeSpan TS = i.joinDt.Value - 日期时间。 Now.Date;'为了避免将'DateTime.Now.Date'转换为空,只能将结果转换回来。 – 2011-06-06 12:35:39

+0

工作 - 谢谢 – DarkW1nter 2011-06-06 12:41:53

6

从您需要访问的TimeSpan?得到TimeSpan可空的Value属性 - 无需投。

TimeSpan? tsn = i.joinDt - DateTime.Now.Date; 
TimeSpan ts; 
if(tsn.HasValue) 
{ 
    ts = tsn.Value; 
} 

或者:

if(i.joinDt.HasValue) 
{ 
    TimeSpan ts = i.joinDt.Value - DateTime.Now.Date; 
} 
3

有人可以告诉我怎么投System.Timespan?到System.Timespan

您需要的情况下指定一个默认值,其中TimeSpan?为空:

TimeSpan? nullableTs = ... 
TimeSpan ts = nullableTs ?? TimeSpan.Zero;