c# - 在 DateTime 对象中设置年份

标签 c# datetime

我如何才能只更改日期时间对象中的年份?

我需要从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);
}

这甚至会保留 TicksKind , 所以它比使用 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/

相关文章:

datetime - 从仅日期开始计算夏令时

c# - 在 C# 中从 List<string> 构建字符串

c# - 带有过滤器的 MongoDb FindAsync 游标总是返回 null

mysql - 使用 SQL 选择动态 Unix 纪元时间

Swift - 如何初始化 NSDate 属性的默认值?

python-3.x - Python - 具有多个时区的 Pandas 日期时间列

php - Symfony DateTimeType 没有当天的秒数/TimeType

c# - 使用 Selenium 使用 WindowHandles 跟踪和遍历选项卡和窗口的最佳方法

c# - App.config 和 ConfigurationManager

c# - C#中两个日期之间的周差