Datetime intelligent ou non ?

Signaler
Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
5 mai 2014
-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
-
Salut !

Lorsque j'utilise datetime.addyears(1) sur la date 29février2006 (en imaginant que le 29 février existe en 2006, la flême de vérifier), est ce que la date retournée est 28 février 2007 ?
En fait j'ai plein de bug de dates dans le programme que je crée, et je me demande si datetime ne cache pas des vices  ! Alors si vous connaissez des attrapes nigauts faites moi le savoir (svp) !

MMN

4 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
as-tu essayé avant de poser ta question ?

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
Et d'ailleur, la réponse intelligente, ca serai 28 février 2007? ou 1er mars 2007?
Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
5 mai 2014

Bien sûr que j'ai essayé. Et justement dans mon programme c'est un peu aléatoire défois les dates.
En fait c'est assez compliqué. Mon programme enregistre des date dans une base de donnée access. Et 1 fois par an il récupère ces dates et les recopie dans des nouveaux champs en ya ajoutant 1 an (Datetime.addyears(1)). Et le problême que j'ai c'est que de temps en temps il m'ajoute 2 ans au lieu de 1. J'ai l'impression que c'est carrément aléatoire. Alors est ce que mon prblème vient de access ou de datetime ?

MMN
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
58
Ben fais le test comme dit plus haut!
Bon, je l'ai fait pour toi, parce que ça m'intriguait :

// Je sais que 84 est bissectil, car je suis née en février de cette année ;-)
DateTime dt =
new
DateTime(1984, 02, 29);

DateTime newDt = dt.AddYears(1);  // Ajout d'une année

Console.WriteLine(newDt.ToShortDateString());
// On trouve toujours le même résultat : 28.02.1985

<hr size="2" /> VC# forever
=13319