gpt4 book ai didi

c# - 在日期范围内算出一周中的几天

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

我正在尝试计算某个日期范围内每周有多少天。我的一周是 sat-sat。我有一个开始日期和一个持续时间(和一个周数 - 实际上我想返回整个范围内特定一周的天数)

编辑:我会尽量说得更清楚一点。我确实希望下周六之前的日子跨越一个日期范围.. 所以是的,当它的范围足够长时,第二周将始终是 7 天。但是,如果持续时间直到星期六才延长,那么最后一周将是持续时间的剩余天数。希望下面的答案能说明更多问题。也许不会。周数是日期范围内的周数。与一年中几周的时间无关。值得注意 arrivalDate 可以是星期六,因此如果它是星期六开始并且持续时间为 7,则需要返回 7...

所以基本上如果我说

arrivalDate = 29/06/2014 (sunday)
weeknumber = 1
duration = 17

我需要它返回 6

如果周数是 2,它应该返回 7

如果周数是 3,它应该返回 4

到目前为止我已经有了这个,我知道这远非理想 - 期待一点递归可能效果最好但我的大脑还没有完全运作..

public static int DaysInWeek(DateTime arrivalDate, int weekNumber, int duration)
{
int ret =0;
List<int> arr = new List<int>();
int leftOver = 0;
for (int i = 1; i <= duration; i++)
{
if (arrivalDate.AddDays(i).DayOfWeek == DayOfWeek.Saturday)
{
int x = i;
arr.Add( x - arr.Sum() );
leftOver = duration - arr.Sum();
}
}
if (leftOver < 7 && leftOver > 0) arr.Add( leftOver );
if (arr.Count == 0) ret = duration;
else ret = arr[weekNumber - 1];

return ret;
}

谢谢

最佳答案

这是我基于 CeejeeB 解决方案的解决方案,它处理星期六作为第一天和超出持续时间定义的时间跨度的周数。

public static int DaysInWeek(DateTime arrivalDate, int weekNumber, int duration)
{
// Handle a Saturday as start day
var daysInFirstWeek = arrivalDate.DayOfWeek == DayOfWeek.Saturday ? 7 : DayOfWeek.Saturday - arrivalDate.DayOfWeek;

// First week
if (weekNumber == 1) return Math.Min(duration, daysInFirstWeek);

// Other week
var start = daysInFirstWeek + ((weekNumber - 2) * 7);
return Math.Max(0, Math.Min(7, duration - start));
}

关于c# - 在日期范围内算出一周中的几天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21110489/

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