186

我的 C# 程序中有以下代码。

DateTime dateForButton =  DateTime.Now;  
dateForButton = dateForButton.AddDays(-1);  // ERROR: un-representable DateTime

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

添加或减去的值会导致无法表示的 DateTime。
参数名称:值

我以前从未见过此错误消息,也不明白为什么我会看到它。从我到目前为止阅读的答案中,我相信我可以在加法操作中使用 -1 来减去天数,但正如我的问题所表明的那样,我正在尝试做的事情并非如此。

4

9 回答 9

359
DateTime dateForButton = DateTime.Now.AddDays(-1);
于 2012-06-22T07:48:21.353 回答
85

当您尝试从中减去一个间隔DateTime.MinValue或您想要添加一些东西DateTime.MaxValue(或者您尝试在此最小-最大间隔之外实例化一个日期)时,通常会发生该错误。你确定你没有分配MinValue到某个地方吗?

于 2012-06-22T07:46:28.780 回答
55

你可以做:

DateTime.Today.AddDays(-1)
于 2014-10-31T12:17:25.083 回答
43

您可以使用以下代码:

dateForButton = dateForButton.Subtract(TimeSpan.FromDays(1));
于 2012-06-22T07:41:12.177 回答
12

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

DateTime dateTime = DateTime.Now;
DateTime otherDateTime = dateTime.AddDays(-1);
于 2016-11-17T12:32:52.070 回答
6

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

我的解决方案是TimeSpan

DateTime.Now - TimeSpan.FromDays(1);
于 2018-07-18T15:28:23.350 回答
6

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

DateTime SevenDaysFromEndDate = someDate.Value.AddDays(-1);

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

于 2020-03-10T01:26:21.133 回答
5

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

代替:

DateTime today = DateTime.Today;
today.AddDays(-7);

试试这个:

DateTime today = DateTime.Today;
DateTime sevenDaysEarlier = today.AddDays(-7);
于 2016-08-02T17:25:03.563 回答
-1

使用AddDays(-1)对我有用,直到我试图跨越几个月。当我试图从 2017-01-01 中减去 2 天时,结果是 2016-00-30。它无法正确处理月份的变化(尽管年份似乎很好)。

我用过date = Convert.ToDateTime(date).Subtract(TimeSpan.FromDays(2)).ToString("yyyy-mm-dd"); ,没有问题。

于 2017-02-09T13:37:00.373 回答