Petite devinette amusante avec les dates....

Résolu
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 - 28 oct. 2005 à 16:58
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 - 28 oct. 2005 à 18:39
Bonjour à tous,



En faite mon problème est que je veux faire une fonction qui prend en
paramètre un nombre de 1 à 7. 1 lundi, 2 mardi, 3 = mercredi
etc.....



Et si mettons le nombre est 2 donc mardi, la fonction doit renvoyer une
chaine correspondant à la période sur une semaine correspondant au
jours en cours.



Exemple : (on est vendredi donc 5)



ma fonction(2)

{

return "25/10/2005 _01/11/2005"

}



on est vendredi donc la fonction ma renvoi une chaine qui est la
période du mardi d'avant jusqu'au mardi qui vient. C'est à se demander
si c'est amusant comme devinette en plus



Par avance, merci.

6 réponses

zebobo5 Messages postés 273 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 6 février 2009 1
28 oct. 2005 à 18:00
public string DateBizarre(int jour)

{

int d = ((int)((DayOfWeek)Enum.GetValues(typeof(DayOfWeek)).GetValue(jour))) - ((int)DateTime.Now.DayOfWeek);

if (d > 0) d -= 7;

return DateTime.Now.AddDays(d).ToShortDateString() + " " + DateTime.Now.AddDays(d + 7).ToShortDateString();

}


Ca te vas?


<hr>ZeBobo5
N'oubliez pas de cloturer votre post.
3
zebobo5 Messages postés 273 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 6 février 2009 1
28 oct. 2005 à 18:02
Oups petit pb pour le dimanche, ajouter , avant le "int d..."

if (jour 7) jour 0;
<hr>ZeBobo5
N'oubliez pas de cloturer votre post.
3
zebobo5 Messages postés 273 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 6 février 2009 1
28 oct. 2005 à 18:18
tu as raison, c kan mm plus rapide ke l'enum , mais il faut dans ce cas enlever un jour car le dimanche correspond à 0, donc :



int d = jour - ((int)DateTime.Now.DayOfWeek) - 1;


<hr>ZeBobo5
N'oubliez pas de cloturer votre post.
3
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
28 oct. 2005 à 18:26
Evitez d'appeler plusieurs fois DateTime.Now : imaginez juste le jour où la date changera durant l'execution (bon ok, il ne faut vraiment pas avoir de bol mais...)

Donc je verrais plutôt ça...
public string DateBizarre(int jour)
{
DateTime currentDate = DateTime.Now.Date; if (jour 7) jour 0;
int d = ((int)((DayOfWeek)Enum.GetValues(typeof(DayOfWeek)).GetValue(jour))) - ((int)currentDate .DayOfWeek);
if (d > 0) d -= 7;
return currentDate .AddDays(d).ToShortDateString() + " " + currentDate .AddDays(d + 7).ToShortDateString();
}

/*
coq
MVP Visual C#
*/
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
28 oct. 2005 à 18:14
Merci bcp de ta réponse,



J'ai rien compris à cette ligne :



int d = ((int)((DayOfWeek)Enum.GetValues(typeof(DayOfWeek)).GetValue(jour))) - ((int)DateTime.Now.DayOfWeek);



mais est ce qu'on peut la remplacer par celle ci ? :



int d = jour - ((int)DateTime::Now.DayOfWeek);
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
28 oct. 2005 à 18:39
merci de vos réponses
0
Rejoignez-nous