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
17348
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
27 mai 2022
596
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()


Quand j'étais petit, la mer Morte n'était que malade.
George Burns
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
17348
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
27 mai 2022
596
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
17348
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
27 mai 2022
596
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
17348
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
27 mai 2022
596
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
17348
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
27 mai 2022
596
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
17348
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
27 mai 2022
596
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
17348
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
27 mai 2022
596
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
17348
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
27 mai 2022
596
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
17348
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
27 mai 2022
596
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
17348
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
27 mai 2022
596
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