Probleme de Date

Steph115 Messages postés 163 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 3 février 2012 - 28 janv. 2007 à 23:58
Steph115 Messages postés 163 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 3 février 2012 - 29 janv. 2007 à 14:11
Bonjour à vous,

J'ai actuellement un petit souci très embettant. Je voudrais faire la différence entre une date fourni par l'utilisateur et "Maintenant".
(Exemple d'application : Connaître son âge exact)

J'utilise pour cela les fonctions fourni par le Framework de .NET
// On effectue un test avant car sinon un exception est levé si la différence est négative
TimeSpan diff = (
this.autre >
DateTime.Now) ?
this.autre -
DateTime.Now :
DateTime.Now -
this.autre;

// Transforme cette différence en date (plus exploitable qu'un TimeSpan)
DateTime difference =
new
DateTime(diff.Ticks);

Puis je récupère le nombre d'année, mois, jour, heure, minutes et secondes par les propriétés de la classe DateTime
(Exemple : difference.Years ou difference.Month)

Mon problème est le suivant : J'affiche une fausse date dès fois il y a 1 an de décalage dès fois c'est 15 jours de décalage bref ca marche pas du tout.
Auriez vous une idée,

Merci. ++ Nexus Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.

4 réponses

cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
29 janv. 2007 à 00:28
Bonsoir,
DateTime fournit une méthode Substract. Utilise la !

DateTime difference = DateTime.Now.Substract(this.autre);

++
0
Steph115 Messages postés 163 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 3 février 2012
29 janv. 2007 à 00:38
Merci de cette réponse mais Substract retourne un TimeSpan si on lui fournit un DateTime et inversement.

J'ai donc utilisé ta méthode et je suis arrivé à ceci :

TimeSpan

diff =
DateTime.Now.Subtract(
this.autre);

DateTime difference =
new
DateTime(diff.Ticks);

Mais j'ai toujours les mêmes problèmes.

Merci. ++ Nexus Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
0
LUDINSKI Messages postés 441 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 22 mai 2012 8
29 janv. 2007 à 13:49
Salut Steph,

Si tu écrit ça :

TimeSpan
tsDifference =
DateTime
.Now - dtBirthDay;



DateTime
dtDifference =
DateTime
.MinValue.Add( tsDifference );

Tu obtiens la durée par rapport à la date la plus petite (1 janvier 0001)

Donc pour connaitre le nombre de jours, de mois ou d'années, il te suffit de soustraire 1 : int nbrMoisDiff = dtDifference.Month - 1;
par contre, le heures, minutes et secondes sont exactes

Au plaisir ;)
0
Steph115 Messages postés 163 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 3 février 2012
29 janv. 2007 à 14:11
Merci de ton idée mais ca ne donne toujours pas la date exact ca met un an de trop et des mosi en trop.

Je pense que je vais le faire en mode code avec pleins de test et sans utiliser les DateTime et TimeSpan.

Merci. ++ Nexus Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
0
Rejoignez-nous