Aidez moi SVP Date en C Sharp

misetif Messages postés 5 Date d'inscription lundi 6 avril 2015 Statut Membre Dernière intervention 25 avril 2015 - 11 avril 2015 à 10:50
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 - 12 avril 2015 à 12:27
Bonjour,
j'ai un pb si vous pouvez m'aider

je voudrais faire addition d'une date et un nombre de jours sans prendre en considération le jours de vendredi

exemple 10/04/2015+10 JOURS =une date sans prise en compte le vendredi.


merci d'avance mes PROF

1 réponse

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
12 avril 2015 à 09:03
Bonjour

tu testes, pour chaque jour à ajouter, si c'est un vendredi tu ne l'ajoutes pas.

ex

// Défini la date de base
DateTime Date = new DateTime(2015, 04, 10);
// nombre de jours à ajouter
int DayToAdd = 10;

// nombre de jours à ajouter, sans les vendredi
int DayCount = 0;
// test pour chaque jours à ajouter
for (int i = 1; i <= DayToAdd; i++)
  if (Date.AddDays(i).DayOfWeek != DayOfWeek.Friday)
    DayCount++;

DateTime newDate = Date.AddDays(DayCount);



0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
Modifié par Whismeril le 12/04/2015 à 11:32
Bonjour, la question étant assez imprécise, on pourrait l'interpréter dans l'autre sens:
Vendredi jour non ouvré, donc ne compte pas un jour ouvrable, donc il faut ajouter 11 jours ou 12 selon le jour de départ...

Si au lieu d'écrire
10/04/2015+10 JOURS =une date sans prise en compte le vendredi.

il avait écrit 10/04/2015+10 JOURS = 19/04/2015 (ton interprétation) ou 10/04/2015+10 JOURS =21/04/2015 (deuxième hypothèse) on aurait été sûr...
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33 > Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024
12 avril 2015 à 11:41
Tu as raison Whismeril

Dans ce cas il faut ajouter 1J de plus pour les vendredi
if (Date.AddDays(i).DayOfWeek != DayOfWeek.Friday)
    DayCount++;
  else
    DayCount +=2;
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
Modifié par Whismeril le 12/04/2015 à 12:28
On peut s'affranchir du nombre de semaines entière afin de réduite les itérations au 7 maximum:
        private void TestMesetif(DateTime DateDepart, int nbrJours)
        {
            int nbrSemaineEntiere = nbrJours / 7;

            //hypothèse 1
            int semaineAajouter = 6 * nbrSemaineEntiere;
            int joursAajouter = 0;
            for (int i = nbrSemaineEntiere * 7+1; i < nbrJours+1; i++)
                if (DateDepart.AddDays(i).DayOfWeek != DayOfWeek.Friday) joursAajouter++;

            DateTime resultatHypothese1 = DateDepart.AddDays(semaineAajouter + joursAajouter);


            //hypothèse 2
            semaineAajouter = 8 * nbrSemaineEntiere;
            joursAajouter = 0;
            for (int i = nbrSemaineEntiere * 7 + 1; i < nbrJours + 1; i++)
                if (DateDepart.AddDays(i).DayOfWeek != DayOfWeek.Friday) joursAajouter++;
                else joursAajouter += 2;

            DateTime resultatHypothese2 = DateDepart.AddDays(semaineAajouter + joursAajouter);

        }


Dans les 2 cas en ajoutant 123456 jours, nos résultats sont identiques 31 décembre 2304 pour l'hypothèse 1 et 27 juillet 2401 pour l'hypothèse 2.
Ça fait un sacré écart sur la durée!
0
Rejoignez-nous