Dadas dos fechas. Cuál es la mejor manera de calcular el número de horas de trabajo entre ellos. Teniendo en cuenta el horario de trabajo son lunes 8 - 5.30, y martes-viernes 8.30 - 5.30, y que potencialmente cualquier día podría ser un día festivo.Cálculo de las horas de trabajo transcurridas entre 2 datetime
Este es mi esfuerzo, parece horriblemente ineficiente, pero en términos de número de iteraciones y que el método IsWorkingDay golpea el DB para ver si ese datetime es un día festivo.
¿Alguien puede sugerir alguna optimización o alternativa.
public decimal ElapsedWorkingHours(DateTime start, DateTime finish)
{
decimal counter = 0;
while (start.CompareTo(finish) <= 0)
{
if (IsWorkingDay(start) && IsOfficeHours(start))
{
start = start.AddMinutes(1);
counter++;
}
else
{
start = start.AddMinutes(1);
}
}
decimal hours;
if (counter != 0)
{
hours = counter/60;
}
return hours;
}
¿Cuántos días festivos tienes? ; P – leppie