可为空的日期时间变量没有添加时间跨度方法

本文关键字:添加 时间跨度 方法 变量 时间 日期 | 更新日期: 2023-09-27 18:34:56

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

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

  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 :(

可为空的日期时间变量没有添加时间跨度方法

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

Nullable<DateTime>Value属性上调用Add()

if (dtToDate != null) { dtToDate = dtToDate.Value.Add(someTimeSpan); }