gpt4 book ai didi

c# - 如何在一个月内添加天数?

转载 作者:太空宇宙 更新时间:2023-11-03 18:07:20 25 4
gpt4 key购买 nike

我对我的代码非常满意,但还存在一个问题。

我有这个代码(短版):

if (holidays.Contains(eskalation.Value.Date))
{
eskalationsZeit = new DateTime(eskalation.Value.Year, eskalation.Value.Month, eskalation.Value.Day + 1, 8, 0, 0);
if (eskalation.Value.Day == DateTime.DaysInMonth(eskalation.Value.Year, eskalation.Value.Month))
{
eskalation = new DateTime(eskalation.Value.Year, eskalation.Value.Month + 1, 1, 8, 0, 0);

if (eskalation.Value.DayOfWeek == DayOfWeek.Saturday)
{
eskalation = new DateTime(eskalation.Value.Year, eskalation.Value.Month + 1, 3, 8, 0, 0);
}
else if (eskalation.Value.DayOfWeek == DayOfWeek.Sunday)
{
eskalation = new DateTime(eskalation.Value.Year, eskalation.Value.Month + 1, 2, 8, 0, 0);
}
}
}

在这段代码中,我询问这一天是假期(列表),还是周六或周日,如果是一个月的最后一天,所以我必须更改月份。
一切正常,但是 -

如果我有 30 天的一个月的 28 号并且这是一个假期,我会添加 1 天,所以我有 29 号。现在 29 号是星期六,所以我会再添加 2 天,但此时我得到了异常(exception),因为我添加了这样的天:
if (eskalation.Value.DayOfWeek == DayOfWeek.Saturday)
{
eskalation = new DateTime(eskalation.Value.Year, eskalation.Value.Month, eskalation.Value.Day + 2, 8, 0, 0);
}

所以结果将是一个月的第 31 天,只有 30 天。

如何添加一个月的天数?就像 - 如果添加天数的结果大于一个月中的天数 - 取下个月的第一个(第二个,第三个或其他)?!有没有一种方法或快速的解决方案?

感谢您的每一个帮助。

欢呼戴夫

最佳答案

如果您使用 AddDays() 如果发生溢出,它将自动为您处理月份和年份的更改...

eskalation = eskalation.AddDays(numOfDays);

考虑到这一点,我相信以下代码将满足您的需求:
// Keep looping until we find a date that we like
while(true)
{
if(holidays.Contains(eskalation.Value.Date))
eskalation = eskalation.AddDays(1);
else if(eskalation.Value.DayOfWeek == DayOfWeek.Saturday)
eskalation = eskalation.AddDays(2);
else if(eskalation.Value.DayOfWeek == DayOfWeek.Sunday)
eskalation = eskalation.AddDays(1);
else
break;
}

注意 : 你可以用括号整理代码,如果你愿意,可以改进逻辑。我只是想保持简短,以便更容易理解正在发生的事情

关于c# - 如何在一个月内添加天数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24779131/

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