【问题标题】:I can't use datetime subtract method我不能使用日期时间减法
【发布时间】:2016-11-29 17:35:03
【问题描述】:

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

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

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

我想用上面的方法。我可以像这样使用 Add 方法:

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

我想知道为什么尽管主页是日期时间。 减法,我不能用减法……

【问题讨论】:

  • 显示您尝试过的代码并解释问题
  • 请添加您的代码并将其放在 [code] 标记之间,格式帮助中对此进行了说明。并准确告诉我们发生了什么,以及您预期会发生什么。
  • 感谢您的回复。对不起,我自己解决了这个问题。

标签: vb.net vb.net-2010


【解决方案1】:

让我们看看当您尝试将 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 的“值”,因为它是一个值类型: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 方法返回一个新的 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”。

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

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

它会抛出 System.ArgumentOutOfRangeException。

【讨论】:

  • 请注意:一些用户可能会觉得这个答案的语气有点过于轻率。我个人对此没什么意见,但其他人似乎有不同的想法。
猜你喜欢
  • 1970-01-01
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-30
相关资源
最近更新 更多