Calcul d'heure

Résolu
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021 - Modifié le 4 mai 2021 à 19:29
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021 - 6 mai 2021 à 20:34
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

Whismeril Messages postés 19048 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 mai 2024 656
Modifié le 4 mai 2021 à 21:10
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()


0
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021
4 mai 2021 à 21:58
D'accord merci vraiment pour l'explication
0
Whismeril Messages postés 19048 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 mai 2024 656
5 mai 2021 à 07:16
de rien
0
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021
5 mai 2021 à 10:21
Bonjour, je viens d'essayer ta méthode et ca ne marche pas.
voici ce que ca m'affiche:
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021
Modifié le 5 mai 2021 à 11:22
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:
0
Whismeril Messages postés 19048 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 mai 2024 656
5 mai 2021 à 11:29
C’est quoi le contrôle sur lequel tu as essayé d’afficher la durée ?
0
Whismeril Messages postés 19048 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 mai 2024 656
5 mai 2021 à 11:48
Ok, as tu exécuté en pas à pas et espionné les variables pour voir ce qui se passe?
0
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021
Modifié le 5 mai 2021 à 12:09
Non j'ai pas fait ca, je sais pas réellement comment m'y prendre comme suis un débutant
0
Whismeril Messages postés 19048 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 mai 2024 656
5 mai 2021 à 13:03
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

0
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021
5 mai 2021 à 15:29
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);
0
Whismeril Messages postés 19048 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 mai 2024 656
5 mai 2021 à 15:39
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.
0
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021
5 mai 2021 à 16:23
oui mais j'ai essayé et ca ne marche pas chez moi.


pour afficher le résultat, j'ai utilisé un textbox.
0
Whismeril Messages postés 19048 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 mai 2024 656
5 mai 2021 à 18:41
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
0
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021
5 mai 2021 à 21:03
voici ce qui s'affiche:
0
Whismeril Messages postés 19048 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 mai 2024 656
5 mai 2021 à 22:37
Et quel est le contenu de txtfin.Value, et de txtdebut.Value?
0
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021
6 mai 2021 à 10:13
Voici leurs contenu:
txtfin.value = "12:00:00";
txtdebut.value = "08:00:00";
0
Whismeril Messages postés 19048 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 mai 2024 656
6 mai 2021 à 12:23
C’est quoi le type de txtfin et txtdebut?
0
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021
6 mai 2021 à 13:22
le type des deux est en datetimepicker qui ont un format time
0
Whismeril Messages postés 19048 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 mai 2024 656
6 mai 2021 à 14:45
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
0
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021
6 mai 2021 à 15:14
D'accord
0
Rejoignez-nous