Petite devinette amusante avec les dates.... [Résolu]

Messages postés
903
Date d'inscription
mercredi 23 février 2005
Dernière intervention
16 juin 2010
- - Dernière réponse : cs_emmanuel9
Messages postés
903
Date d'inscription
mercredi 23 février 2005
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.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
273
Date d'inscription
dimanche 5 octobre 2003
Dernière intervention
6 février 2009
1
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 87 internautes nous ont dit merci ce mois-ci

Commenter la réponse de zebobo5
Messages postés
273
Date d'inscription
dimanche 5 octobre 2003
Dernière intervention
6 février 2009
1
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 87 internautes nous ont dit merci ce mois-ci

Commenter la réponse de zebobo5
Messages postés
273
Date d'inscription
dimanche 5 octobre 2003
Dernière intervention
6 février 2009
1
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 87 internautes nous ont dit merci ce mois-ci

Commenter la réponse de zebobo5
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
88
3
Merci
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#
*/

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 87 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_coq
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Dernière intervention
16 juin 2010
2
0
Merci
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);
Commenter la réponse de cs_emmanuel9
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Dernière intervention
16 juin 2010
2
0
Merci
merci de vos réponses
Commenter la réponse de cs_emmanuel9

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.