Hi All,
I need to determine duration between two DateTimes in minutes.
However, there is a slight twist:
- exclude weekends
- only count minutes
which are between 7:00AM and 7:00PM.
for example:
[09/30/2010 6:39:00 PM] - [09/30/2010 7:39:00 PM] = 21 Minutes
I'm just having a hard time coming up with a decent way to do it and would appreciate if anyone can suggest something.
Thanks.
Edit:
I ended up going with dtb's solution. There is only one special case which needed to be taken care of: if end time is after 7:00PM, count the minutes from 7:00AM to the actual end time.
This is how I modified it:
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;
Again, thanks for the help.