Potrzebuję określić czas trwania między dwoma DateTimes w minutach.C# - Czas między dwoma DateTimes w minutach
Jednak istnieje niewielkie skręcenie:
- wyklucza weekendy
- tylko liczyć minuty które są między 7:00 i 7:00 PM. na przykład:
[09/30/2010 6:39:00 PM] - [09/30/2010 7:39:00 PM] = 21 Minutes
Ja tylko problemy ze wymyślanie przyzwoity sposób, aby to zrobić i będę wdzięczny jeśli ktoś może coś zasugerować.
Dzięki.
Edit:
I skończyło się za pomocą roztworu DTB. Jest tylko jeden szczególny przypadek, który należy załatwić: jeśli czas zakończenia przypada po godzinie 19:00, policz minuty od godziny 7:00 do faktycznego czasu zakończenia.
To jak ja zmodyfikowano go:
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;
Ponownie, dzięki za pomoc.
@ 0xA3, a nie dupę tego pytania, ponieważ to pytanie nie odnosi się do wykluczonych dni i czasów tutaj zadawanych. –
@Kirk - to prawda. Nieskończona liczba sposobów korzystania z TimeSpan z niestandardowymi regułami wykluczania pozostawia pytania SO przez kolejne 10 lat. –
Cóż, ludzie powinni pokazywać swoje działania, tak jak to miało być w szkole. :) –