当前位置:  开发笔记 > 编程语言 > 正文

在DateTime对象中设置年份

如何解决《在DateTime对象中设置年份》经验,为你挑选了2个好方法。

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

我需要从excel调用一些日期,如果我调用的日期是在今天日期之前,则将年份设置为2099.

例如:被称为日期:15/11/2010需要设置为15/11/2099

这可行吗?或者最好改变整个日期?



1> Tim Schmelte..:

你只需要创建一个新的,DateTime因为它DateTime是一个不可变的结构:

DateTime newDt = new DateTime(2099, dt.Month, dt.Day);

如果你想处理leapyear问题(源日期是在leapyear但目标年份没有),你可以使用以下扩展方法:

public static DateTime ChangeYear(this DateTime dt, int newYear)
{
    return dt.AddYears(newYear - dt.Year);
}

这将保留偶数TicksKind,因此它比使用DateTime构造函数更好.02/28/2099 如果原始DateTime是02/29/2016(闰年),它将返回.

您可以这样使用它:

DateTime dt = new DateTime(2016, 2, 29);
DateTime newDt = dt.ChangeYear(2099); 



2> Sergey Berez..:

DateTime是不可变类型.您不能更改年份或其他任何部分.您应该DateTime使用新年创建新实例.没有其他选择.

var date1 = DateTime.Now;
var date2 = new DateTime(2099, date1.Month, date1.Day);

如果您需要经常这样做,可以写一个扩展名:

public static DateTime JumpToYear(this DateTime date, int year)
{
    // you can also provide Hour, Minute, Second and Millisecond
    return new DateTime(year, date.Month, date.Day);
}

用法:

var date2 = date1.JumpToYear(2099);

注意:更改年份时,2月29日日期可能无效.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有