gpt4 book ai didi

c#判断一个时间段内有多少小时属于特定的小时数

转载 作者:行者123 更新时间:2023-11-30 14:56:28 24 4
gpt4 key购买 nike

我有一个事件的时间段(例如 2014 年 4 月 6 日 11:30 至 2014 年 4 月 8 日 10:15)并且我有办公时间(例如周一至周五 9:00 至 17:00)。

我需要计算受事件影响的营业时间(小数)。

我能想出一个方法来做到这一点,但它看起来非常冗长和困惑,所以想看看是否有人能想出一些优雅的东西?

谢谢凯夫

最佳答案

这是一个使用 LINQ 的简短易读的方法。请注意,它既没有经过充分测试也没有效率。但也许它还是有帮助的:

DateTime incidentStart = new DateTime(2014, 04, 06, 11, 30, 0, 0, 0);
DateTime incidentEnd = new DateTime(2014, 04, 08, 10, 15, 0, 0, 0);
int minutes = (int)(incidentEnd - incidentStart).TotalMinutes;
TimeSpan officeOpen = TimeSpan.FromHours(9);
TimeSpan officeClosed = TimeSpan.FromHours(17);
decimal numHours = Enumerable.Range(0, minutes)
.Select(min => incidentStart.AddMinutes(min))
.Where(dt => dt.DayOfWeek != DayOfWeek.Saturday && dt.DayOfWeek != DayOfWeek.Sunday
&& dt.TimeOfDay >= officeOpen && dt.TimeOfDay < officeClosed)
.GroupBy(dt => new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, 0, 0, 0)) // round to hour
.Count();

结果是 11,这似乎是正确的,不是吗?

关于c#判断一个时间段内有多少小时属于特定的小时数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22939055/

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