2

Timespanをnull許容日時変数に追加するには?

日時を次の形式に変換し、ストアド プロシージャにパラメーターとして渡したい

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

上記dtToDateはnull可能ではないため、正常に動作しています

Addしかし、null可能な日時変数の場合、以下のコードを使用して日時を形式に変換する 方法を見つけることができませんでした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 非許容型がサポートするすべての操作をサポートすることは想定されていません。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 に答える