我如何才能只更改日期时间对象中的年份?
我需要从excel中调用多个日期,如果我调用的日期在今天日期之前,则将年份设置为2099。
例如被调用的日期:15/11/2010 需要设置为15/11/2099
这可行吗?还是最好更改整个日期?
最佳答案
你只需要创建一个新的 DateTime
因为 DateTime
是一个不可变的结构:
DateTime newDt = new DateTime(2099, dt.Month, dt.Day);
如果你想处理闰年问题(源日期是闰年但目标年份不是),你可以使用以下扩展方法:
public static DateTime ChangeYear(this DateTime dt, int newYear)
{
return dt.AddYears(newYear - dt.Year);
}
这甚至会保留 Ticks
和 Kind
, 所以它比使用 DateTime
构造函数更好。如果原始日期时间是 02/29/2016
(闰年),它将返回 02/28/2099
。
你可以这样使用它:
DateTime dt = new DateTime(2016, 2, 29);
DateTime newDt = dt.ChangeYear(2099);
关于c# - 在 DateTime 对象中设置年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41805583/