Récupérer les jours pair et impair dans une année [Résolu]

Signaler
Messages postés
7
Date d'inscription
mardi 11 décembre 2007
Statut
Membre
Dernière intervention
6 mai 2009
-
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
-
Hello,

Je cherche une solution pour récupérer les lundis d'une semaine paire et les mardis d'une semaine impaire.
Une fois trouvé, tout part dans une listview (ceci est déjà fait, mais j'ai tout les lundi et mardis d'une année qui s'y mettent).
Je tourne en rond depuis quelques heures sur ce problème. Si quelqu'un à une piste.

J'ai tenté des boucles en vérifiant si une semaine est bien paire ou impaire, mais j'ai dû me planter quelques part. J'ai aussi tenté de supprimer une ligne sur deux pour ne garder que les bonnes, mais tout cela n'est pas très fiable. Si on peut ne récupérer uniquement les lundis d'une semaine paire et les mardis d'une semaine impaire, et que tout cela soit pérpétuel, cela m'aiderait beaucoup.

Merci.

9 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
47
Seb'> voui, ou regarder si le dernier bit est à 1 ou 0? C'est bcp bcp plus rapide :)

<hr />
-Blog-
-Site Perso-
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
pour vérifier qu'un nombre est pair, il suffit de regarder le résultat du modulo 2.

si pair : nombre % 2 = 0
si impair : nombre % 2 = 1
Messages postés
7
Date d'inscription
mardi 11 décembre 2007
Statut
Membre
Dernière intervention
6 mai 2009

Oui, j'ai bien fait tout cela, je met un peu de code :

Une fonction :

if ((Intsemaine % 2) == 0)
{
return true;
}
else
{
return false;
}



Que je récupère dans ma page (ceci est un des nombreux essai) :

DateTime débutDate;
DateTime finDate;
finDate = DateTime.Now.AddYears(1);

CultureInfo ci = new CultureInfo("fr-FR");
DateTime Dtsemaine = DateTime.Now;
int Intsemaine = ci.Calendar.GetWeekOfYear(Dtsemaine, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);

débutDate = DateTime.Today;

Semaine semainepair = new Semaine();

if (checkBox_Toute_Annee_Lundi_Tab1.Checked == true)
{
for (débutDate.AddMilliseconds(1); débutDate < finDate; débutDate = débutDate.AddDays(1))
{
if (semainepair.PairImpair(Intsemaine))
{
if (débutDate.DayOfWeek == DayOfWeek.Monday)
{
listView_Reca_Resa.Items.Add(débutDate.ToString("dddd dd MMMM yyyy"));
}
}
Intsemaine = Intsemaine + 1;
}
}



Le problème est que j'ai tout le temps les 52( ou 53) lundis de l'année qui s'y mettent.
Messages postés
7
Date d'inscription
mardi 11 décembre 2007
Statut
Membre
Dernière intervention
6 mai 2009

Mince, pas très lisible tout mon code. Je le remet en forme.

DateTime débutDate;
DateTime finDate;
finDate = DateTime.Now.AddYears(1);

CultureInfo ci = new CultureInfo("fr-FR");
DateTime Dtsemaine = DateTime.Now;
int Intsemaine = ci.Calendar.GetWeekOfYear(Dtsemaine, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);

débutDate = DateTime.Today;
Semaine semainepair = new Semaine();

if (checkBox_Toute_Annee_Lundi_Tab1.Checked == true)
{
for (débutDate.AddMilliseconds(1); débutDate < finDate; débutDate = débutDate.AddDays(1))
{
if (semainepair.PairImpair(Intsemaine))
{
if (débutDate.DayOfWeek == DayOfWeek.Monday)
{
listView_Reca_Resa.Items.Add(débutDate.ToString("dddd dd MMMM yyyy"));
}
}
Intsemaine = Intsemaine + 1;
}
}
Messages postés
7
Date d'inscription
mardi 11 décembre 2007
Statut
Membre
Dernière intervention
6 mai 2009

Mince, toujours pas très lisible, désolé.
Messages postés
7
Date d'inscription
mardi 11 décembre 2007
Statut
Membre
Dernière intervention
6 mai 2009

Merci à vous pour votre aide, je vais plancher sur cette solution.

Merci encore pour votre activité sur le forum.
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
Bidou... c'est pas faux :)

un exemple de code ?
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
47
La question s'adresse à moi?
Si oui:

        public static bool IsEven(int n)
        {
            return (n & 1) == 0;
        }

<hr />
-Blog-
-Site Perso-
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
bah oui... tu lances l'idée du byte mais tu ne mets pas de code :p

merci... et en effet, c'est bien plus rapide ;)