我需要以分钟为单位确定两个 DateTimes 之间的持续时间。
但是,有一个小转折:
- 不包括周末
- 只计算上午 7:00 到晚上 7:00 之间的分钟数。例如:
[09/30/2010 6:39:00 PM] - [09/30/2010 7:39:00 PM] = 21 Minutes
我只是很难想出一个体面的方法来做到这一点,如果有人能提出建议,我将不胜感激。
谢谢。
编辑:
我最终选择了 dtb 的解决方案。只有一种特殊情况需要注意:如果结束时间在晚上 7:00 之后,则计算从早上 7:00 到实际结束时间的分钟数。
这就是我修改它的方式:
var minutes = from day in start.DaysInRangeUntil(end)
where !day.IsWeekendDay()
let st = Helpers.Max(day.AddHours(7), start)
let en = (day.DayOfYear == end.DayOfYear ?
end :
Helpers.Min(day.AddHours(19), end)
)
select (en - st).TotalMinutes;
再一次感谢你的帮助。