j'ai besoin de calculer le nombre de jours de travail entre deux dates. une journée de travail est un jour quelconque du lundi au vendredi, sauf les jours fériés. le code ci-dessous le fait, mais il utilise une boucle. est-ce que quelqu'un voit un moyen de se débarrasser de la boucle ou au moins l'optimiser?s'il vous plaît aider à optimiser cette boucle
grâce Konstantin
using System;
using System.Linq;
namespace consapp
{
static class Program
{
static void Main(string[] args)
{
var holidays = new DateTime[] { new DateTime(2010, 11, 23), new DateTime(2010, 11, 30) };
var date_start = new DateTime(2010, 12, 3);
var date_end = date_start.AddDays(-9.9);
var duration = (date_end - date_start).Duration();
for (var d = date_end; d < date_start; d = d.Date.AddDays(1))
{
if (holidays.Contains(d.Date) || d.DayOfWeek == DayOfWeek.Saturday || d.DayOfWeek == DayOfWeek.Sunday)
{
duration -= TimeSpan.FromDays(1) - d.TimeOfDay;
}
}
Console.WriteLine(duration);
}
}
}
Avez-vous essayé d'abord si cela fonctionne correctement avant d'essayer de l'optimiser? Avez-vous profilé le code pour vous assurer que c'est le goulot d'étranglement? –
Quelles sont les plages de dates généralement utilisées par votre programme? À quel point le code fonctionne-t-il maintenant et à quel point avez-vous besoin de le faire? Bien que je sois certain qu'il existe des façons plus optimales de le faire, je confirmerais d'abord que les résultats sont médiocres. –
duplicata possible de [Calculer le nombre de jours ouvrables entre deux dates?] (Http://stackoverflow.com/questions/1617049/calculate-the-number-of-business-days-between-two-dates) – NotMe