我试图从C#中的DateTime中减去天数,但是我收到了一个我不明白的错误

Bue*_*ena 123 c# datetime

我在C#程序中有以下代码.

DateTime dateForButton =  DateTime.Now;  
dateForButton = dateForButton.AddDays(-1);  // ERROR: un-representable DateTime
Run Code Online (Sandbox Code Playgroud)

每当我运行它时,我都会收到以下错误:

增加或减去的值会导致无法表示的DateTime.
参数名称:value

我以前从未见过这个错误信息,也不明白为什么我会看到它.从我到目前为止阅读的答案来看,我总是相信我可以在添加操作中使用-1来减去天数,但正如我的问题所示,这不是我试图做的事情.

chr*_*dev 260

DateTime dateForButton = DateTime.Now.AddDays(-1);
Run Code Online (Sandbox Code Playgroud)

  • 这个答案,回答主题标题.这永远不应该被投票.大多数人都来自谷歌.如果有人不同意这个答案,应提供主题标题的编辑.¬¬ (12认同)
  • 它可能会回答主题标题,但如果您阅读实际问题,那显然不是OP提出的问题.而不是内疚绊倒人们接受你的答案,并因为提问者给出了一个解决他们问题的不同答案而哭泣,你应该编辑OP的问题和标题,这样就更有意义了.你显然有足够的声誉点来编辑问题,所以标题和描述更有意义,并提供更多的帮助,OP显然不知道如何正确地说出事情,所以让我们试着帮助那个呃? (2认同)

Cyb*_*ude 67

当您尝试从中减去某个间隔DateTime.MinValue或想要添加某些内容DateTime.MaxValue(或者尝试实例化此最小 - 最大间隔之外的日期)时,通常会发生该错误.你确定你没有在哪里指派MinValue


小智 43

你可以做:

DateTime.Today.AddDays(-1)
Run Code Online (Sandbox Code Playgroud)


Raj*_*ian 35

您可以使用以下代码:

dateForButton = dateForButton.Subtract(TimeSpan.FromDays(1));
Run Code Online (Sandbox Code Playgroud)

  • 如果日期是DateTime.MinValue,这也将失败.AddDays(-1)同样适用 (4认同)

cah*_*yaz 12

dateTime.AddDays(-1) 不减去一天,有一个dateTime参考。它将返回一个新实例,从原始引用中减去这一天。

DateTime dateTime = DateTime.Now;
DateTime otherDateTime = dateTime.AddDays(-1);
Run Code Online (Sandbox Code Playgroud)


小智 6

我在使用AddDays(-1) 时遇到了问题。

我的解决方案是TimeSpan

DateTime.Now - TimeSpan.FromDays(1);
Run Code Online (Sandbox Code Playgroud)


小智 5

AddDays 方法的对象(即目标变量)不能与源相同。

代替:

DateTime today = DateTime.Today;
today.AddDays(-7);
Run Code Online (Sandbox Code Playgroud)

试试这个:

DateTime today = DateTime.Today;
DateTime sevenDaysEarlier = today.AddDays(-7);
Run Code Online (Sandbox Code Playgroud)


Sam*_*ain 5

不是直接从日期对象中直接减少天数,而是先获取日期值然后减去天数。见下面的例子:

DateTime SevenDaysFromEndDate = someDate.Value.AddDays(-1);
Run Code Online (Sandbox Code Playgroud)

这里,someDate 是一个 DateTime 类型的变量。