Convertir DateTime en Double c#
Résolu
lookers
Messages postés
85
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour tout le monde,
Je demande votre aide car je cherche depuis 3 jours sans trouver de réponse.
A mon programme en C# j'ai 3 richTextBox
La premiere : rtbDateDebut (de type DateTime)
La 2eme : rtbDateFin (de type DateTime)
La 3eme : rbtEcheance (de type TimeSpan)
Ce que je chetche c lorsque la 3eme arrive a 0 ou inférieur un mrssage MessageBox s'affiche.
Mais j'ai toujours le meme message d'erreur (impissible de convertir DateTime en RichTextBox ou Double.......)
Je demande votre aide car je cherche depuis 3 jours sans trouver de réponse.
A mon programme en C# j'ai 3 richTextBox
La premiere : rtbDateDebut (de type DateTime)
La 2eme : rtbDateFin (de type DateTime)
La 3eme : rbtEcheance (de type TimeSpan)
Ce que je chetche c lorsque la 3eme arrive a 0 ou inférieur un mrssage MessageBox s'affiche.
Mais j'ai toujours le meme message d'erreur (impissible de convertir DateTime en RichTextBox ou Double.......)
3 réponses
-
ça déjà
TextReader date1 = new StreamReader (date1.txt);
ça n'est pas possible, il ne peut pas y avoir 2 variables avec le même nom, de 2 types différents sur la même ligne. En même dans la même portée. Je ne comprends même pas que Visual Studio t'es laissé exécuter ce code.
Et puis un richTextBox, pour afficher juste une date, c'est un peu riche... Un textBox suffit largement.
Ensuite quand tu arrives làDateTime dateDifference1 = DateTime.Parse(date1);
date1 n'est forcément pas représentatif d'une date, c'est soit un TextReader, fermé de surcroit, soit un truc représentant probablement le chemin d'un fichier.
Après avoir corrigé le reste, si tu arrives làTimeSpan joursRests = dateDifference2 - dateDifference1;
joursRests, c'est pas des jours. C'est une durée, soit des jours, des heures, des minutes et des secondes, et même si tes "dates" sont justes des dates, sans heures, minutes secondes, et bien joursRests sera n jours, 0 heure, 0 minutes et 0 secondes.
EnfinjoursRests <= 0
n'est pas possible, soit tu extrais du TimeSpan le nombre de jours qu'il représente, à l'aide de sa propriété TotalDays, soit tu le compare avec un TimeSpan de durée 0joursRests <= TimeSpan.FromHours(0)
. Mais le plus simple reste de comparer directement les dates.
Donc en gros ton code devrait ressembler à çastring cheminDebut = "";//mets ici le chemin du 1er fichier string cheminFin = "";//mets ici le chemin du 2eme fichier DateTime debut = DateTime.Parse(File.ReadAllText(cheminDebut));//lit le fichier et en fait une date DateTime fin = DateTime.Parse(File.ReadAllText(cheminFin)); tbxDebut.Text = debut.ToShortDateString();//Affiche la date dans le TextBoX (tbx) du Debut tbxFin.Text = fin.ToShortDateString(); If (debut >= fin) { Message.Box.Show (Warnning !!!!!); }
J'ai changé les noms des variables de façon à être explicite. Tu verras, quand tu reprendras ton programme dans un an, se sera plus facile de t'y repencher avec des noms clairs plutôt que date1, date1, textbox1, textbox2, etc....
Quand j'étais petit, la mer Morte n'était que malade.
George Burns -
Bonjour
Sans voir ton code, impossible de savoir ce qui se passe.
Voir ici comment poster un code lisible.
Mais un truc est certain, une RichTextbox ne peut pas être du type DateTime comme tu le dis. C'est du type RichTextBox. Et pour le TimeSpna c'est pareil.
Quand j'étais petit, la mer Morte n'était que malade.
George Burns-
TextReader date1 = new StreamReader (date1.txt); richTextBox1.Text = date1.ReadToEnd(); date1.Close(); TextReader date2 = new StreamReader (date2.txt); richTextBox2.Text = date2.ReadToEnd(); date2.Close(); DateTime dateDifference1 = DateTime.Parse(date1); DateTime dateDifferenec2 = DateTime.Parse(date2); TimeSpan joursRests = dateDifference2 - dateDifference1; If (joursRests <= 0) { Message.Box.Show (Warnning !!!!!);
-
-
Bonjour Whismeril, merci de repondre.
En fait les 2 richTextBox lisent les date depuis des fuchier text (string)
TextReader date1 = new StreamReader (date1.txt); richTextBox1.Text = date1.ReadToEnd(); date1.Close(); TextReader date2 = new StreamReader (date2.txt); richTextBox2.Text = date2.ReadToEnd(); date2.Close(); DateTime dateDifference1 = DateTime.Parse(date1); DateTime dateDifferenec2 = DateTime.Parse(date2); TimeSpan joursRests = dateDifference2 - dateDifference1; If (joursRests <= 0) { Message.Box.Show (Warnning !!!!!); }-
Bonjour,
Remplace juste la ligneif (joursRests <= 0)
parif (joursRests.Ticks <= 0)
. En effet, un TimeSpan ne peut pas être directement comparé à un entier (À la limite en comparant à 0 on comprend, nous humains, le sens, mais imagine joursRests <= 1 ? Ça veut dire quoi ? Un jour, une seconde ?)
Xavier
-