gpt4 book ai didi

c# - 月底计算

转载 作者:可可西里 更新时间:2023-11-01 03:13:43 27 4
gpt4 key购买 nike

只是想知道是否有人知道以下问题的优雅解决方案。

如果我有 2009 年 6 月 30 日并且我添加一个月,我希望它转到 2009 年 7 月 31 日,而不是 2009 年 7 月 30 日。

此逻辑基于以下事实:2009 年 6 月 30 日是 6 月的月底,当我添加一个月时,我想转到下个月的月底。

但是如果我有 2009 年 6 月 29 日并且我添加一个月它应该去 2009 年 7 月 29 日。

请注意,我需要能够添加任意数量的月份,并且我需要考虑闰年。

我也知道这里的逻辑是有问题的,但这是一项业务需求,适用于月末契约(Contract)将在未来一个月结束。

我想过几个解决方案,但没有一个是非常优雅的。因此我在想有人可能有更好的方法。

干杯安东尼

最佳答案

要检查日期是否为月末,您需要检查下一天是否是某个月的第一天。你的算法应该是“如果这一天不是月末,加 1 个月。如果是月末,加 1 天,加 1 个月,减 1 天。”

    bool IsEndOfMonth(DateTime date) {
return date.AddDays(1).Day == 1;
}
DateTime AddMonthSpecial(DateTime date) {
if (IsEndOfMonth(date))
return date.AddDays(1).AddMonths(1).AddDays(-1);
else
return date.AddMonths(1);
}

关于c# - 月底计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/978959/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com