Menu

Convertir DateTime en Double c# [Résolu]

lookers 69 Messages postés samedi 4 février 2012Date d'inscription 17 juillet 2017 Dernière intervention - 12 juil. 2017 à 12:39 - Dernière réponse : Whismeril 11417 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 avril 2018 Dernière intervention
- 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.......)
Afficher la suite 

8 réponses

Répondre au sujet
Whismeril 11417 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 avril 2018 Dernière intervention - Modifié par Whismeril le 17/07/2017 à 18:53
+1
Utile
2
ç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
Cette réponse vous a-t-elle aidé ?  
lookers 69 Messages postés samedi 4 février 2012Date d'inscription 17 juillet 2017 Dernière intervention - 17 juil. 2017 à 21:28
Merci Mec
Whismeril 11417 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 avril 2018 Dernière intervention - 17 juil. 2017 à 22:15
de rien
Commenter la réponse de Whismeril
Whismeril 11417 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 avril 2018 Dernière intervention - Modifié par Whismeril le 15/07/2017 à 10:30
0
Utile
1
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
lookers 69 Messages postés samedi 4 février 2012Date d'inscription 17 juillet 2017 Dernière intervention - 17 juil. 2017 à 17:49
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 !!!!!);
Commenter la réponse de Whismeril
lookers 69 Messages postés samedi 4 février 2012Date d'inscription 17 juillet 2017 Dernière intervention - Modifié par *_Francis_* le 17/07/2017 à 18:30
0
Utile
2
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 !!!!!);
}
Reivax962 3214 Messages postés jeudi 16 juin 2005Date d'inscription 20 avril 2018 Dernière intervention - 17 juil. 2017 à 18:44
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
lookers 69 Messages postés samedi 4 février 2012Date d'inscription 17 juillet 2017 Dernière intervention > Reivax962 3214 Messages postés jeudi 16 juin 2005Date d'inscription 20 avril 2018 Dernière intervention - 17 juil. 2017 à 21:28
Merci bcp
Commenter la réponse de lookers