Ho un elenco di elementi di lavoro. Ogni oggetto di lavoro ha un inizio e un orario di fine.Ottieni interruzioni da un elenco di volte
Quindi, in pratica sembra che questo:
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));
Ora voglio ottenere il tempo totale che è stato lavorato. Di nuovo, fondamentalmente questo è facile:
09:00-11:00 => 2 hours
13:00-17:00 => 4 hours
----
06:00 hours
È solo la somma.
Ma ora diventa difficile: come faccio a calcolare questa somma se voglio estrarre tempi paralleli?
esempio
09:00-11:00 => 2 hours
10:00-11:30 => 1.5 hours
13:00-17:00 => 4 hours
----
06:30 hours
è di 6,5 ore, ma la somma è di 7,5 ore. Il fatto che due elementi di lavoro siano mappati sull'intervallo tra le 10 e le 11 fa la differenza.
Come potrei risolvere questo per un numero arbitrario di elementi di lavoro che possono sovrapporsi l'un l'altro in praticamente in ogni modo possibile (circostante, inizio sovrapposizioni, sovrapposizioni di fine, incluso)?
Ci sono intervalli impostati (ad esempio 0,5 ore è il minimo)?Se è così, un modo semplice sarebbe quello di controllare ogni mezz'ora di spazio per un oggetto di lavoro che lo circonda e basta aggiungerli tutti. –
Purtroppo no, i tempi sono completamente arbitrari e possono variare da secondi a più giorni. –
Ora l'ho risolto usando questa libreria: Facile, diretto e funziona :-) –