Calcul d'heure [Résolu]

Signaler
Messages postés
29
Date d'inscription
vendredi 16 avril 2021
Statut
Membre
Dernière intervention
6 mai 2021
-
Messages postés
29
Date d'inscription
vendredi 16 avril 2021
Statut
Membre
Dernière intervention
6 mai 2021
-
Bonsoir, comment vous allez?
j'aimerais calculer l'heure a partir de mon formulaire cours qui me permet de programmer un cours. j'ai utilise un datetimepicker pour la date de début, fin et total qui doit calculer le nombre d'heure que la séance de cours fait. Au niveau du datetimepicker j'ai changé le format en time et dans la base de donnée les champs sont de type time. Je sais pas si je devais passer par cette méthode. Qu'est-ce que vous me proposez?
voici ce que j'ai mis, je ne sais même pas si c'est comme ca:
 string debut = txtdebut.Text;
                TimeSpan datd = TimeSpan.Parse(debut);
                string fin = txtfin.Text;
                TimeSpan datf = TimeSpan.Parse(fin);
                string total = txttotal.Text;
                TimeSpan datt = TimeSpan.Parse(total);
                datt = datf - datd;

voici la photo:


Merci

24 réponses

Messages postés
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 mai 2021
540
Bonsoir

Tu fais 2 erreurs de conception fondamentales
  • Un datetimepicker pour sélectionner la date de début, l'heure de début et l'heure de fin oui, c'est à ça que ça sert. Mais pour calculer une durée non, ça ne calcule pas et ça ne gère pas de durée. (D'ailleurs ton code se mord la queue sur ce calcul)
  • Il ne faut pas confondre texte affiché et donnée.


Donc
  • La donnée d'un datetimepicker, c'est un DateTime et pas une string.
  • Une durée, c'est la différence entre 2 DateTime, et ça se stocke dans un TimeSpan, (comme tu l'as fait à la ligne 7)
  • Pour afficher une durée, on utilise un label, textbox etc... et par exemple la méthode ToString du TimeSpan (puisqu'apparemment tu ne te sers pas de binding)

TimeSpan duree = dtpFin.Value - dtpDebut.Value;
labelDuree.Text = duree.ToString()


Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Messages postés
29
Date d'inscription
vendredi 16 avril 2021
Statut
Membre
Dernière intervention
6 mai 2021

D'accord merci vraiment pour l'explication
Messages postés
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 mai 2021
540
de rien
Messages postés
29
Date d'inscription
vendredi 16 avril 2021
Statut
Membre
Dernière intervention
6 mai 2021

Bonjour, je viens d'essayer ta méthode et ca ne marche pas.
voici ce que ca m'affiche:
Messages postés
29
Date d'inscription
vendredi 16 avril 2021
Statut
Membre
Dernière intervention
6 mai 2021

j'ai essaye de passer par une autre méthode en mettant des textbox: en md.txt (minute début), mf.txt(minute fin), hd.txt(heure début), hf.txt(heure fin), ht.txt(heure total), mt.txt(minute total).
Mais j'ai l'impression que c'est pas comme ca :
                int mdd = int.Parse(md.Text);
                int mff = int.Parse(mf.Text);
                int hdd = int.Parse(hd.Text);
                int hff = int.Parse(hf.Text);
                int resulm = mff - mdd;
                int resulh = hff - hdd;
                ht.text = resulh.tostring();
                mt.Text = resulm.ToString();

voici la partie:
Messages postés
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 mai 2021
540
C’est quoi le contrôle sur lequel tu as essayé d’afficher la durée ?
Messages postés
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 mai 2021
540
Ok, as tu exécuté en pas à pas et espionné les variables pour voir ce qui se passe?
Messages postés
29
Date d'inscription
vendredi 16 avril 2021
Statut
Membre
Dernière intervention
6 mai 2021

Non j'ai pas fait ca, je sais pas réellement comment m'y prendre comme suis un débutant
Messages postés
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 mai 2021
540
Savoir debugguer est plus important au début que savoir coder.

https://docs.microsoft.com/fr-fr/visualstudio/debugger/debugger-feature-tour?view=vs-2019

Messages postés
29
Date d'inscription
vendredi 16 avril 2021
Statut
Membre
Dernière intervention
6 mai 2021

je viens de voir que le problème vient de la conversion du string en int.
int mdd = int.Parse(md.Text);
                int mff = int.Parse(mf.Text);
                int hdd = int.Parse(hd.Text);
                int hff = int.Parse(hf.Text);
Messages postés
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 mai 2021
540
Non, pas ce code là, celui que je t'ai donné.
Je t'ai dit que la donnée d'un DateTimePicker, c'est un DateTime.
Utiliser le .Text c'est du bricolage.
Messages postés
29
Date d'inscription
vendredi 16 avril 2021
Statut
Membre
Dernière intervention
6 mai 2021

oui mais j'ai essayé et ca ne marche pas chez moi.


pour afficher le résultat, j'ai utilisé un textbox.
Messages postés
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 mai 2021
540
oui mais j'ai essayé et ca ne marche pas chez moi.
ça j'ai compris, mais c'est avec ce code que je te demande d'exécuter en pas à pas et d'espionner les variables.

Si tu ne trouves pas la solution par toi même, tu reviens et tu donnes ligne par ligne le contenu des variables
Messages postés
29
Date d'inscription
vendredi 16 avril 2021
Statut
Membre
Dernière intervention
6 mai 2021

voici ce qui s'affiche:
Messages postés
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 mai 2021
540
Et quel est le contenu de txtfin.Value, et de txtdebut.Value?
Messages postés
29
Date d'inscription
vendredi 16 avril 2021
Statut
Membre
Dernière intervention
6 mai 2021

Voici leurs contenu:
txtfin.value = "12:00:00";
txtdebut.value = "08:00:00";
Messages postés
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 mai 2021
540
C’est quoi le type de txtfin et txtdebut?
Messages postés
29
Date d'inscription
vendredi 16 avril 2021
Statut
Membre
Dernière intervention
6 mai 2021

le type des deux est en datetimepicker qui ont un format time
Messages postés
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 mai 2021
540
Ok, je tache de faire un test de mon côté ce soir, il y à longtemps que je n’ai pas fait de winform, j’ai p’tet raté un truc
Messages postés
29
Date d'inscription
vendredi 16 avril 2021
Statut
Membre
Dernière intervention
6 mai 2021

D'accord