Mam listę przedmiotów pracy. Każdy element pracy ma czas rozpoczęcia i zakończenia.Otrzymuj przerwy z listy czasów
Więc w zasadzie wygląda to tak:
List<Work> works = new List<Work>();
works.Add(new Work(
new DateTime(2013, 4, 30, 9, 0, 0),
new DateTime(2013, 4, 30, 11, 0, 0));
Teraz chcę uzyskać całkowity czas, który został opracowany. Ponownie, w zasadzie jest to łatwe:
09:00-11:00 => 2 hours
13:00-17:00 => 4 hours
----
06:00 hours
To tylko suma.
Ale teraz staje się trudne: jak mogę obliczyć tę sumę, jeśli chcę wyodrębnić czasy równoległe?
przykład
09:00-11:00 => 2 hours
10:00-11:30 => 1.5 hours
13:00-17:00 => 4 hours
----
06:30 hours
6,5 godziny, lecz suma wynosi 7,5 godziny. Fakt, że dwa elementy pracy są odwzorowane na czas między godziną 10 a 11, robi różnicę.
W jaki sposób mogę rozwiązać ten problem dla dowolnej liczby elementów pracy, które mogą się nakładać na siebie w praktycznie każdy możliwy sposób (otoczenie, początek nakładania się, nakładanie się końcówek, w tym)?
Czy ustawione są określone interwały (na przykład 0,5 godziny)?Jeśli tak, prostym sposobem byłoby sprawdzenie co półgodzinnego czasu pracy dla elementu roboczego wokół niego i po prostu je wszystkie dodać. –
Niestety nie, czasy są całkowicie arbitralne i mogą wynosić od kilku sekund do kilku dni. –
Rozwiązałem go teraz za pomocą tej biblioteki: Łatwo, prosto i po prostu działa :-) –