c# - DateTime.AddMonths 仅添加月份而不是日期

标签 c# datetime

比方说,我有 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/

相关文章:

java - 如何使用 Java ZoneId 的区域设置?

php - 选择空的 mysql 日期时间字段

java - 如何在 Java 7 中将具有 UTC 偏移量的日期时间值转换为 GMT

c# - ASP.NET WebAPI HttpGet 操作 - 查询字符串后模型为空

c# - 当不将子节点添加到vm的构造函数中时,WPF TreeView 不显示子节点

python - 根据另一个 Pandas Dataframe 的日期范围分配周数

java - 为什么与 UTC 具有相同偏移量的时区显示不同的时间?

c# - 删除 arrayList 中的元素后出现 InvalidOperationException

c# - 如何在实体中的使用表中创建 PK 和唯一用户名(使用代码优先)?

C# 现有对象上的 'new' 关键字