比方说,我有 2010 年 2 月 28 日,并使用 AddMonths(1)
...
在该日期上加一个月
结果日期是 3 月 28 日,但不是我想要的 3 月 31 日。
有没有办法稍微调整一下,这样就可以在不添加自定义代码的情况下工作?
编辑:我不需要一个月的最后一天,实际上我需要加一个月,但是当它是一个月的最后一天时,我需要找到下个月的最后一天。
最佳答案
我不知道你想达到什么目的,但你可以加一天,加一个月,减一天。
DateTime nextMonth = date.AddDays(1).AddMonths(1).AddDays(-1);
编辑:
正如其中一位评论者所指出的,这有时会给出错误的结果。阅读您更新后的问题后,我认为计算所需日期的最简单方法是:
public static DateTime NextMonth(this DateTime date)
{
if (date.Day != DateTime.DaysInMonth(date.Year, date.Month))
return date.AddMonths(1);
else
return date.AddDays(1).AddMonths(1).AddDays(-1);
}
此扩展方法返回下个月的日期。当前日期为当月最后一天时,返回下个月的最后一天。
关于c# - DateTime.AddMonths 仅添加月份而不是日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3060381/