【问题标题】:AddYear method doesn't work as excpected [duplicate]AddYear 方法不能按预期工作 [重复]
【发布时间】:2015-01-24 09:47:53
【问题描述】:

我需要将年份添加到 DateTime 变量,但由于某种原因,此函数根本不会影响..

这是我的代码:

DateTime dtCmp = new DateTime(calendarBirthDay.Value.Year, calendarBirthDay.Value.Month, calendarBirthDay.Value.Day);
dtCmp.AddYears(DateTime.Now.Year - calendarBirthDay.Value.Year);

我也尝试过一些微不足道的事情:

dtCmp.AddYears(1);

这还行不通..

【问题讨论】:

  • 您期望的实际效果是什么?更改dtCmpDateTime 是不可变类型。你不能改变它。即使你认为你改变了它,你实际上也创建了一个新实例。
  • 如果您真的想了解调用 AddYears 时会发生什么,您应该查看 AddMonths 的源代码(由 AddYears 内部调用)See ReferenceSource
  • MSDN documentation 明确表示:此方法不会更改此 DateTime 对象的值。相反,它返回一个新的 DateTime 对象,其值是此操作的结果。

标签: c# datetime


【解决方案1】:

您需要将其存储回变量以反映更改。

dtCmp = dtCmp.AddYears(1);

【讨论】:

    【解决方案2】:

    AddYears 方法返回 DateTime 对象的新实例,因为 DateTime 是一个结构。您需要将返回值存储到自身中以增加旧值:

    dtCmp = dtCmp.AddYears(1)
    

    【讨论】:

      猜你喜欢
      • 2019-01-06
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      • 2016-05-03
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      • 2015-03-17
      相关资源
      最近更新 更多