|
PROFESSIONAL NEWSGROUPS WINDEV, WEBDEV and WINDEV Mobile |
| | | | | |
durée entre deus heures et cumul des durées |
Started by alain Pédréno, Feb., 06 2023 8:04 AM - 12 replies |
| |
| | | |
|
| |
Posted on February, 06 2023 - 8:04 AM |
Bonjour, je veux gérer des séances de RDV de durées variables. j'utilise les fonctions heure, durée et minutes exemple: debut est heure = "16:00" Fin est heure = "18:15" la durée calculée est de "02:25" au lieu de "02:15" comment convertir? d'autre part, je veux cumuler les differentes durées établies |
| |
| |
| | | |
|
| | |
| |
Registered member 3,844 messages Popularité : +227 (347 votes) |
|
Posted on February, 06 2023 - 9:01 AM |
Bonjour, Quel est ton code pour calculer la durée ? Ton 02:25 ressemble fortement à 2,25h soit 2h15 Pour cumuler les différentes durées, il suffit de les additionner.
-- Il y a peut être plus simple, mais, ça tourneMessage modified, February, 06 2023 - 9:05 AM |
| |
| |
| | | |
|
| | |
| |
Registered member 2,566 messages Popularité : +222 (260 votes) |
|
Posted on February, 07 2023 - 9:32 AM |
Bonjour,
Voici un exemple de calcul sur les durées
hDebut est une Heure = "1600" hFin est une Heure = "1815" duDureeTotale est une Durée
duDureeTotale = hFin - hDebut Trace(hFin - hDebut)
hDebut = "1100" hFin = "1125" duDureeTotale += hFin - hDebut Trace(hFin - hDebut)
hDebut = "1000" hFin = "1536" duDureeTotale += hFin - hDebut Trace(hFin - hDebut) Trace("Durée totale = " + duDureeTotale) Trace("Durée totale (formatée) = " + DuréeVersChaîne(duDureeTotale,"+J j HH h MM m SS s")) Trace("Durée totale (h) = " + duDureeTotale..EnHeures) Trace("Durée totale (min) = " + duDureeTotale..EnMinutes) Trace("Durée totale (jours) = " + duDureeTotale..EnJours)
Résultat:
0021500000 0002500000 0053600000 Durée totale = 0081600000 Durée totale (formatée) = 0 j 08 h 16 m 00 s Durée totale (h) = 8.26666666666666666666666666666666666 Durée totale (min) = 496 Durée totale (jours) = 0.3444444444444444444444444444444444444
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | |
| |
Registered member 1,143 messages Popularité : +50 (142 votes) |
|
Posted on February, 07 2023 - 11:12 AM |
Bonjour,
La conversion de réel en durée peut se faire avec une procédure comme celle-ci, par exemple :
Procedure RéelVersDurée(LOCAL rDuréeEnRéel est réel):Durée duRésultatDurée est une Durée duRésultatDurée..Heure = PartieEntière(rDuréeEnRéel) duRésultatDurée..Minute = PartieDécimale(rDuréeEnRéel)*60
RENVOYER duRésultatDurée
-- Thierry TILLIER Développeur WINDEV -WEBDEV Formation WINDEV : https://coursdinfo-video.teachizy.fr/ Livre WINDEV : https://amzn.eu/d/6xTow1z Tuto WINDEV sur ma chaîne Youtube |
| |
| |
| | | |
|
| | |
| |
Registered member 2,566 messages Popularité : +222 (260 votes) |
|
Posted on February, 08 2023 - 11:57 AM |
@THIERRY TILLIER
Il y a beaucoup plus simple: RéelVersDateHeure
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | |
| |
Registered member 1,143 messages Popularité : +50 (142 votes) |
|
Posted on February, 08 2023 - 7:05 PM |
| |
| |
| | | |
|
| | |
| |
Registered member 2,566 messages Popularité : +222 (260 votes) |
|
Posted on February, 09 2023 - 11:08 AM |
@Philippe RéelVersDateHeure <> RéelVersDurée
Au temps pour moi, j'ai mal lu et pas fais attention que tu calculais une durée.
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | |
| |
Registered member 179 messages Popularité : +17 (17 votes) |
|
Posted on February, 09 2023 - 4:52 PM |
THIERRY TILLIER a écrit :
Bonjour, La conversion de réel en durée peut se faire avec une procédure comme celle-ci, par exemple : Procedure RéelVersDurée(LOCAL rDuréeEnRéel est réel):Durée duRésultatDurée est une Durée duRésultatDurée..Heure = PartieEntière(rDuréeEnRéel) duRésultatDurée..Minute = PartieDécimale(rDuréeEnRéel)*60 RENVOYER duRésultatDurée -- Thierry TILLIER Développeur WINDEV -WEBDEV Formation WINDEV : https://coursdinfo-video.teachizy.fr/Livre WINDEV : https://amzn.eu/d/6xTow1zTuto WINDEV sur ma chaîne Youtube
Bonjour Thierry,
avec cette approche il faut être absolument certain que l'on aura jamais de durée négative car sinon cette fonction ne fonctionne pas.
Le problème est dans la fonction PartieEntière car la partie entière de -2.4 est égale à -3. C'est contre intuitif et ça peut provoquer des surprises.
Voici la fonction qui permet de traiter aussi correctement les durées négatives :
Procedure RéelVersDurée(LOCAL rDuréeEnRéel est réel):Durée duRésultatDurée est une Durée duRésultatDurée..Heure = PartieEntière(Abs(rDuréeEnRéel)) duRésultatDurée..Minute = PartieDécimale(Abs(rDuréeEnRéel))*60
SI rDuréeEnRéel < 0 ALORS duRésultatDurée *= -1 FIN RENVOYER duRésultatDurée |
| |
| |
| | | |
|
| | |
| |
Registered member 108 messages Popularité : +1 (1 vote) |
|
Posted on February, 09 2023 - 5:04 PM |
Bonjour,
Je découvre dans "Procedure RéelVersDurée(LOCAL rDuréeEnRéel est réel):Durée" , le typage de la variable de retour par le ":Durée". Quel est l'intérêt de typer si la variable de retour est déjà typée ?
Résultat est une Durée Résultat = RéelVersDurée(MaDuréeEnRéel) |
| |
| |
| | | |
|
| | |
| |
Registered member 3,844 messages Popularité : +227 (347 votes) |
|
Posted on February, 09 2023 - 5:37 PM |
Bonjour, 1-Tu peux très bien avoir
... RENVOYER RéelVersDurée(MaDuréeEnRéel) 2-Lors de l'appel de la fonction, cela évite aussi un appel incorrect
rMonRéel est réel
rMonRéel=MaFonction() avec
FONCTION MaFonction(): chaîne
RENVOYER "Bonjour"
-- Il y a peut être plus simple, mais, ça tourneMessage modified, February, 09 2023 - 5:43 PM |
| |
| |
| | | |
|
| | |
| |
Registered member 179 messages Popularité : +17 (17 votes) |
|
Posted on February, 10 2023 - 10:50 AM |
NadSoftware a écrit :
Bonjour,
Je découvre dans "Procedure RéelVersDurée(LOCAL rDuréeEnRéel est réel):Durée" , le typage de la variable de retour par le ":Durée". Quel est l'intérêt de typer si la variable de retour est déjà typée ?
Résultat est une Durée Résultat = RéelVersDurée(MaDuréeEnRéel)
En plus de ce qu'a répondu Voroltinquo ça peut être utile lorsque l'on retourne la mauvaise variable en fin de procédure (ça m'arrive parfois).
Si on a un retour un peu complexe, style :
Procedure MaProc() : tableau associatif de tableau de RendezVous taRetour est un tableau de tableau de RendezVous
RENVOYER taRetour
On aura une erreur de compilation et on peut faire la correction directe (ce qui économise parfois de longue minutes/heures de débogage).
Un autre avantage est dans les procédure des webservice : typer le retour permet de prendre en compte la modification dans le WSDL et donc lors de mise à jour on a une vraie mise à jour, pas un interprétation de ce qui a été initialement retourné.
En résumé : on peut faire sans mais on s'évite des problèmes supplémentaires en le spécifiant systématiquement. |
| |
| |
| | | |
|
| | |
| |
Registered member 108 messages Popularité : +1 (1 vote) |
|
Posted on February, 10 2023 - 11:00 AM |
Bonjour, Merci des explications Voroltinquo et Jérôme |
| |
| |
| | | |
|
| | |
| |
Registered member 1,143 messages Popularité : +50 (142 votes) |
|
Posted on February, 10 2023 - 1:02 PM |
NadSoftware a écrit :
Bonjour,
Je découvre dans "Procedure RéelVersDurée(LOCAL rDuréeEnRéel est réel):Durée" , le typage de la variable de retour par le ":Durée". Quel est l'intérêt de typer si la variable de retour est déjà typée ?
Résultat est une Durée Résultat = RéelVersDurée(MaDuréeEnRéel)
Ce n'est pas une obligation mais j'ai commencé en C et C++ ou tout doit être typé. J'ai gardé cette habitude. Et comme le dit Jérôme, ça rend le code plus "solide".
@Jérôme Oui tout à fait pour la durée négative. Merci pour la précision.
-- Thierry TILLIER Développeur WINDEV -WEBDEV Formation WINDEV : https://coursdinfo-video.teachizy.fr/ Livre WINDEV : https://amzn.eu/d/6xTow1z Tuto WINDEV sur ma chaîne Youtube |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|