Devinette 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 - 31 oct. 2005 à 11:10
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 - 31 oct. 2005 à 13:14
Bonjour à tous,



J'ai une fonction qui prend un paramètre un nombre entre 1 et 31 et cette fonction doit retourner une chaine

qui correspond par exemple :



si on lui envoi un 15 elle renvoi "15/10/2005 14/11/2005"



En faite on part d'une date qui correspond au mois en cours avec le
jour en paramètre et on y ajoute 1 mois moins 1 jours. Le problème
c'est que si le jour passé en paramètre est 28 et que le mois en cours
est 31 ca pose quelque problème. J'ai trouvé un moyen mais ca marche
pas ca me renvoi 31/10/2005 29/11/2005 par exemple.



A votre bon coeur.

4 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
31 oct. 2005 à 11:18
DateTime dateDebut = new DateTime(2005,10,28);
DateTime dateFin = dateDebut.AddMonths(1);
dateFin = dateFin.AddDays(-1);
MessageBox.Show(dateDebut.ToShortDateString() + " " + dateFin.ToShortDateString());

?

/*
coq
MVP Visual C#
*/
3
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
31 oct. 2005 à 13:08
Logique, à toi de voir quelle logique de gestion tu veux appliquer à ce moment là...
Par exemple un repli automatique vers le dernier jour du mois...

private string GetChaine(int day)
{
#if DEBUG
int currentYear = 2005;
int currentMonth = 2;
#else
DateTime currentDate = DateTime.Now.Date;
int currentYear = currentDate.Year;
int currentMonth = currentDate.Month;
#endif


DateTime dateDebut;
try
{
dateDebut = new DateTime(currentYear,currentMonth,day);
}
catch
{
dateDebut = new DateTime(currentYear,currentMonth,DateTime.DaysInMonth(currentYear, currentMonth));
}


DateTime dateFin = dateDebut.AddMonths(1);
dateFin = dateFin.AddDays(-1);


return dateDebut.ToShortDateString() + " " + dateFin.ToShortDateString();
}

/*
coq
MVP Visual C#
*/
3
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
31 oct. 2005 à 12:55
merci de ta réponse, le petit problème c'est que si jamais le jour envoyé est 31 mettons et qu'on est en fevrier :



date_debut ca va être 31/02/2005 et ca va me faire une erreur..
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
31 oct. 2005 à 13:14
merci de ta réponse
0
Rejoignez-nous