Signaler

Convertir DateTime en Double c# [Résolu]

Posez votre question lookers 70Messages postés samedi 4 février 2012Date d'inscription 17 juillet 2017 Dernière intervention - Dernière réponse le 17 juil. 2017 à 22:15 par Whismeril
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 
Utile
+1
plus moins
ç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
lookers 70Messages postés samedi 4 février 2012Date d'inscription 17 juillet 2017 Dernière intervention - 17 juil. 2017 à 21:28
Merci Mec
Répondre
Whismeril 9688Messages postés mardi 11 mars 2003Date d'inscription ContributeurStatut 25 juillet 2017 Dernière intervention - 17 juil. 2017 à 22:15
de rien
Répondre
Donnez votre avis
Utile
+0
plus moins
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 70Messages 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 !!!!!);
Répondre
Donnez votre avis
Utile
+0
plus moins
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 3024Messages postés jeudi 16 juin 2005Date d'inscription 24 juillet 2017 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
Répondre
lookers 70Messages postés samedi 4 février 2012Date d'inscription 17 juillet 2017 Dernière intervention - 17 juil. 2017 à 21:28
Merci bcp
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !