Compte tenu de plusieurs périodes de temps, comment puis-je obtenir un tableau qui m'indique le nombre d'heures de travail pour une période donnée ?
Les heures de travail commencent à 9 heures et se terminent à 17 heures.
Exemples :
-
15-Nov-2017 16:00 - 17-Nov-2017 12:00 -> Cela devrait me donner un tableau de [1,8,3].
-
15-Nov-2017 09:00 - 17-Nov-2017 12:00 -> Cela devrait me donner un tableau de [8,8,1] (Cela semble facile car je peux faire Hrs / 8 et Hrs % 8 pour obtenir le résultat).
-
16-Nov-2017 15:00 - 17-Nov-2017 15:00 -> Cela devrait me donner un tableau de [2,6].
C'est la méthode qui me donne actuellement le total des heures de travail entre l'heure de début et l'heure de fin :
protected double getWorkingHrs(DateTime _dtTaskStart, DateTime _dtTaskEnd)
{
double count = 0;
for (var i = _dtTaskStart; i < _dtTaskEnd; i = i.AddHours(1))
{
if (i.DayOfWeek != DayOfWeek.Saturday && i.DayOfWeek != DayOfWeek.Sunday)
{
if (i.TimeOfDay.Hours >= 9 && i.TimeOfDay.Hours < 17)
{
count++;
}
}
}
return count;
}
Toute aide serait appréciée.
La tâche a montré comme ça dans des blocs de 8 heures. Ainsi, lorsque j'ajoute une tâche de 20 heures, je dois les décomposer en ensembles et les afficher dans la grille. Je dois les diviser car il y a de fortes chances que la tâche d'un jour différent soit assignée à un utilisateur différent et qu'elle ait des notes différentes, etc.
Cheers