如何将Timespan添加到可为空的datetime变量?
我想将我的日期时间转换为以下格式,并将其作为参数
传递给存储过程 dtToDate = dtToDate.Add(new TimeSpan(23, 59, 59));
sparamToDate.Value = dtToDate .Value.ToString("yyyy-MM-dd HH:mm:ss");
以上工作正常dtToDate
不可为空
但是可以为null的datetime变量
我coulkd无法找到方法Add
使用下面的代码并转换我的日期时间格式
2013-10-11 23:59:59.000
dtToDate = dtToDate.Add(new TimeSpan(23, 59, 59)); NOT WORKING FOR NULLABLE DATETIME :(
答案 0 :(得分:2)
Nullable类型不是假设来支持它们的非可空对应方支持的每个操作。它只是以一种允许你将它视为可以具有null值的方式包装一个结构。在尝试访问任何成员之前,您需要测试该值是否为null。
你可以这样做:
if (dtToDate.HasValue)
{
dtToDate = dtToDate.Value.Add(new TimeSpan(23, 59, 59));
}
或者这个:
dtToDate = dtToDate.HasValue ? dtToDate.Value.Add(new TimeSpan(23, 59, 59)) : dtToDate;
但如果你真的想,你可以定义一个extension method,如下所示:
public static DateTime? Add(this DateTime? dt, TimeSpan offset)
{
return dt.HasValue ? dt.Value.Add(offset) : dt;
}
然后像这样称呼它:
dtToDate = dtToDate.Add(new TimeSpan(23, 59, 59));
答案 1 :(得分:1)
您需要在Add()
的{{1}}媒体资源上致电Value
:
Nullable<DateTime>