可空的datetime变量没有添加时间跨度方法?

时间:2013-10-11 06:30:14

标签: c# asp.net datetime

  

如何将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 :(

2 个答案:

答案 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>