2

如何将时间跨度添加到可为空的日期时间变量?

我想将我的日期时间转换为以下格式并将其作为参数传递给存储过程

  dtToDate = dtToDate.Add(new TimeSpan(23, 59, 59));
sparamToDate.Value = dtToDate .Value.ToString("yyyy-MM-dd HH:mm:ss");

以上工作正常,dtToDate不可为空

但是对于可为空的日期时间变量,我无法找到Add使用以下代码并将日期时间转换为格式的 方法2013-10-11 23:59:59.000

dtToDate = dtToDate.Add(new TimeSpan(23, 59, 59)); NOT WORKING FOR NULLABLE DATETIME :(
4

2 回答 2

2

可空类型不应该支持它们的不可空对应物支持的每个操作。它只是以一种允许您将其视为可以具有 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;

但是如果你真的想要,你可以定义一个扩展方法,像这样:

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));
于 2013-10-11T06:32:19.833 回答
1

您需要调用Add()以下Value属性Nullable<DateTime>

if (dtToDate != null) { dtToDate = dtToDate.Value.Add(someTimeSpan); }
于 2013-10-11T06:33:19.400 回答