我不能使用日期时间减法

I can't use datetime subtract method

我无法使用以下日期时间减法。

https://msdn.microsoft.com/ja-jp/library/system.datetime.subtract(v=vs.110).aspx

我使用 Microsoft Visual Studio Proffesional 2013 和 VisualBasic2013 以及 .NetFrameWork 版本 4.5.50938

我想用上面的方法。我可以使用这样的添加方法:

Dim dt As Datetime = Nothing
dt.Add(New TimeSpan(1))

我想知道为什么有主页是Datetime。 减法,我不会用减法……

让我们看看当您尝试将 DateTime 创建为 Nothing 时会发生什么:

Dim dt As DateTime = Nothing
Console.WriteLine(dt.ToString("yyyy-MM-dd HH:mm:ss.fffffff"))

我们得到“0001-01-01 00:00:00.0000000”。这是可以用 DateTime 表示的最早日期时间。它不能包含 Nothing 的 "value",因为它是值类型:Why is null not allowed for DateTime in C#?.

让我们尝试添加 1 个刻度:

dt.Add(New TimeSpan(1))
Console.WriteLine(dt.ToString("yyyy-MM-dd HH:mm:ss.fffffff"))

哦!我们再次得到“0001-01-01 00:00:00.0000000”。没有添加勾号。那是因为 Add 方法 returns 一个新的 DateTime - 它不影响调用 Add 的那个。

我们再试一次:

dt = dt.Add(New TimeSpan(1))
Console.WriteLine(dt.ToString("yyyy-MM-dd HH:mm:ss.fffffff"))

现在我们按预期得到“0001-01-01 00:00:00.0000001”。

如果我们尝试早于第一个允许的日期时间会发生什么?

Dim dt As DateTime = Nothing
dt = dt.Subtract(New TimeSpan(1))

它抛出一个System.ArgumentOutOfRangeException。