从DateTime中减去天数

时间:2012-06-22 07:33:08

标签: c# datetime

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

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

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

  

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

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

9 个答案:

答案 0 :(得分:238)

DateTime dateForButton = DateTime.Now.AddDays(-1);

答案 1 :(得分:63)

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

答案 2 :(得分:38)

你可以这样做:

DateTime.Today.AddDays(-1)

答案 3 :(得分:30)

您可以使用以下代码:

dateForButton = dateForButton.Subtract(TimeSpan.FromDays(1));

答案 4 :(得分:3)

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

而不是:

.glyphicon {
    font-size: 25px;
    vertical-align: middle;
}
#authForm {
    display:inline-block;
    width:150px;
}

请改为尝试:

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

答案 5 :(得分:2)

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

我的解决方案是 TimeSpan

DateTime.Now - TimeSpan.FromDays(1);

答案 6 :(得分:2)

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

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

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

答案 7 :(得分:0)

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

DateTime dateTime = DateTime.Now;
DateTime otherDateTime = dateTime.AddDays(-1);

答案 8 :(得分:0)

使用AddDays(-1)为我工作直到我试图跨越几个月。当我试图从2017-01-01减去2天时,结果是2016-00-30。它无法正确处理月份变化(虽然这一年似乎很好)。

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