Convertir DateTime en Double c#

Résolu/Fermé
lookers Messages postés 69 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 17 juillet 2017 - 12 juil. 2017 à 12:39
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 - 17 juil. 2017 à 22:15
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.......)
A voir également:

3 réponses

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
Modifié le 17 juil. 2017 à 18:53
ç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.

Enfin
joursRests <= 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 0
joursRests <= TimeSpan.FromHours(0)
. Mais le plus simple reste de comparer directement les dates.


Donc en gros ton code devrait ressembler à ça
string 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
1
lookers Messages postés 69 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 17 juillet 2017
17 juil. 2017 à 21:28
Merci Mec
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
17 juil. 2017 à 22:15
de rien
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
Modifié le 15 juil. 2017 à 10:30
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
0
lookers Messages postés 69 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 17 juillet 2017
Modifié le 17 juil. 2017 à 18:29
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 !!!!!);
0
lookers Messages postés 69 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 17 juillet 2017
Modifié le 17 juil. 2017 à 18:30
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 !!!!!);
}
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié le 17 juil. 2017 à 18:46
Bonjour,

Remplace juste la ligne
if (joursRests <= 0)
par
if (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
0
lookers Messages postés 69 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 17 juillet 2017 > Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021
17 juil. 2017 à 21:28
Merci bcp
0