【问题标题】:How to subtract a month from Date object?如何从 Date 对象中减去一个月?
【发布时间】:2011-01-12 11:32:45
【问题描述】:

如何在 VB.NET 中从日期对象中减去一个月?

我试过了:

Today.AddMonths(-1)

但是,鉴于今天是 2010 年 1 月 1 日,我得到的结果是 2010 年 12 月 1 日。我想要的答案是 2009 年 12 月 1 日。

在 .NET 框架中是否有方便的方法来执行此操作?

【问题讨论】:

  • 好的。这个问题(和答案)真的让我很困惑。您使用的出现上述问题的确切代码是什么?我在调试器中输入了 Today.AddMonths(-1) ,它工作正常,如果您在一月份,则从年份中减去一个。
  • 嗨杰森。问题实际上并不是 .AddMonths() 不起作用。问题是 Date 对象是不可变的。我没有将 .AddMonths() 的返回值分配给变量。比如我在做 someDate.AddMonths(-1),这时应该是 someDate = someDate.AddMonths(-1)。
  • 不过,在这种情况下, someDate 不会改变。即在您的示例中,它仍将设置为 2010 年 1 月 1 日,而不是 2010 年 12 月 1 日。因此,我的困惑。

标签: asp.net vb.net date subtraction


【解决方案1】:

您实际上必须将 Today 传输到一个变量中,并让该赋值在那里工作。以下代码将产生您期望的结果(我只是验证了它,因为您的帖子让我三思而后行)。

Dim dt As DateTime = Date.Today
dt = dt.AddMonths(-2)

Dim x As String = dt.ToString()

【讨论】:

    【解决方案2】:

    这很好用,您需要记住 DateTime 是不可变的。

    Dim d As DateTime
    d = New DateTime(2010, 1, 1)
    d = d.AddMonths(-1)
    

    看看DateTime Structure

    对一个实例的计算 日期时间,例如加或减, 不修改的值 实例。相反,计算 返回 DateTime 的新实例 其值是 计算。

    【讨论】:

    • 谢谢。所有 -2 业务都令人困惑。
    【解决方案3】:
    Dim d As DateTime = #1/1/2010#
    d = d.AddMonths(-1)
    

    【讨论】:

      【解决方案4】:

      我已经使用了以下方法并且它有效。

      Dim dtToday As DateTime = Date.Today
      dtToday = dtToday.AddMonths(-2)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-28
        相关资源
        最近更新 更多