abracadabraPDF › Forums › PDF – Général › Code pour calculer heures, minutes, secondes
- Ce sujet contient 23 réponses, 4 participants et a été mis à jour pour la dernière fois par bebarth, le il y a 1 année et 5 mois.
-
CréateurSujet
-
27 juin 2023 à 11:10 #73031ecluse105Participant
Bonjour
Je voudrais connaitre le code à utiliser pour calculer des kilomètres en heures minutes et secondes
Exemple : j’ai un champ de texte dans lequel sont affichés les kilomètres, et dans un autre champ de texte je voudrais afficher avec un javascript un calcul des kilomètres en heures minutes et secondes.
Et aussi peut-on dans en javascript calculer dans un champ de Texte1, multiplier le champ de Texte2, diviser par champ de Texte3 et diviser par le champ de Texte4
C’est à dire faire plusieurs opérations dans le même javascript.
En attente de réponses merci
-
CréateurSujet
-
AuteurRéponses
-
27 juin 2023 à 13:37 #73032MerlinMaître des clés
Bonjour
Sur le principe la réponse est oui, mais dans ton exemple il manque un opérateur : la vitesse.
D’ailleurs il n’y a pas besoin de JavaScript, un calcul en notation simplifiée suffit :
((Texte1 * Texte2) / Texte3) / Texte4
Attachments:
You must be logged in to view attached files.28 juin 2023 à 15:22 #73034ecluse105ParticipantJ’ai peut être pas bien expliquer.
Exemple, dans un champ de texte j’ai une distance de 22 Kilomètre et sachant que je suis à une vitesse de 9 kilomètre heure, dans un autre champ de texte quel sera la formule pour calculer cela en heures minute et secondes.
Sur excel j’ai trouver la solution mais sur adobe je n’ai pas encore trouver.
29 juin 2023 à 10:00 #73035MerlinMaître des clésDu coup c’est encore plus simple.
temps = distance / vitesse
Donc dans le champ qui doit afficher le temps il faut placer ce calcul en notation simplifiée :
distance / vitesse
Si on part du principe que les champs se nomment “distance” et “vitesse”.
Attention, le résultat est donné en heures décimales, il faudra ensuite éventuellement convertir en H:MM
Voir : https://open.crea-learning.com/mod_turbolead/mod/crealearning/reader.php?n=OTA4MyYyOTEzMw%3D%3D
5 juillet 2023 à 10:31 #73050michel c.ParticipantJ’ai un souci également pour un calcul de temps.
J’ai un fichier qui permet d’inscrire ses temps pour des distances diverses : 500m ; 1000 m ; 1500 m ….
Et je voudrais que mon script calcule automatiquement l’allure moyenne pour 500m.
Mais je n’y arrive pas.
Le champ t.+i correspond au temps mis pour parcourir la distance inscrite dans le champs dist.+i
Le champ t.+i est au format hh:mm:ss mais il pourrait être au format h:mm:ss car le temps n’excèdera jamais les 2h.
Le champ m.+i est également au format hh:mm:ss mais en réalité j’aimerais que ce soit au format mm:ss:centièmes de secondes mais je ne sais pas faire
Pour le calcul de l’allure moyenne, j’ai fait bêtement ceci mais ça ne fonctionne pas.
this.getField("m."+i).value = (this.getField("t."+i).value)*(500)/this.getField("dist."+i).value;
Merci
Attachments:
You must be logged in to view attached files.5 juillet 2023 à 13:16 #73052ecluse105ParticipantPour l’instant j’ai laisser tombé, jais fait les mêmes calculs sur microsoft office et là pas de problèmes tout fonctionne, mais dans acrobat au niveau javascript cela me parait plus compliqué.
6 juillet 2023 à 06:18 #73053michel c.ParticipantJ’ai essayé d’utiliser un fichier trouvé sur ce forum (TimeSheet) et de l’adapter mais j’ai toujours un souci…
Attachments:
You must be logged in to view attached files.6 juillet 2023 à 08:28 #73055MerlinMaître des clésQuand j’ouvre ton fichier n°2 la console m’affiche cette erreur au moins 10 fois :
TypeError: this.geField is not a function
2:Field:CalculateDonc il faut commencer par remplacer geField par getField.
Je n’aurai pas le temps aujourd’hui mais j’examinerai ça de plus près ce soir ou demain.
6 juillet 2023 à 11:31 #73058bebarthMaître des clésbonjour,
Moi je n’ai pas d’erreur mais la première chose que je vois c’est qu’il n’y a pas de champs “t.” (t minuscule).@+
😎6 juillet 2023 à 13:32 #73061michel c.ParticipantBonjour, je viens de retirer les erreurs. Mais je ne comprend toujours pas comment calculer les allures moyennes sur 500m…
Attachments:
You must be logged in to view attached files.6 juillet 2023 à 14:08 #73063bebarthMaître des clésIl n’y a toujours pas de champs “t.”…
Et pour la boucle de la première ligne, a<=13 (et non a<17).@+
😎Attachments:
You must be logged in to view attached files.6 juillet 2023 à 17:33 #73067michel c.ParticipantEffectivement, mais ce n’est pas le bouton Fin de séance qui est affecté au calcul d’allure moyenne. Je ne l’avais pas modifié car ce n’est pas cette partie qui me pose problème. Je l’ai rectifié mais ce qui m’intéresse c’est le calcul d’allure moyenne pour les champs “total.”+i
Merci
- Cette réponse a été modifiée le il y a 1 année et 5 mois par michel c..
Attachments:
You must be logged in to view attached files.6 juillet 2023 à 20:00 #73070bebarthMaître des clésJe n’ai pas étudié le fichier complètement pour savoir à quoi correspondent les différents champs, mais dans ton script :
for (var a=0 ; a<14 ; a++){
var d = this.getField("dist."+a).value;
var b = 500/d;
}
event.value= "";
var somme=Time2Num("mm:ss", this.getField("end.0").value)/b;
HM_Format()
La boucle ne sert à rien vu qu’il n’y a pas d’opération, et ton b sera donc toujours celui de l’indice 13…
Je pense que ce n’est pas ce que u souhaites !@+
😎Attachments:
You must be logged in to view attached files.7 juillet 2023 à 07:00 #73073michel c.ParticipantBonjour, effectivement, ça ne pouvait pas marcher.
Je viens de créer un script de document permettant de calculler l’allure moyenne sur 500m qui se présente ainsi :
function allure() {
event.value= "";
for (var a=1 ; a<14 ; a++) {var somme=Time2Num("mm:ss", 500*(this.getField("end.0").value))/this.getField("dist."+a).value;
HM_Format()
}}
Mais cela ne fonctionne toujours pas. J’ai essayé de comprendre la fonction Time2Num que j’ai trouvée sur ce forum et que j’essaye d’adapter mais j’avoue que je ne comprend pas tout.
Je pense que je pourrais arriver à mes fins si je saisissais les heures minutes secondes dans 3 champs séparés mais ça ne sera pas très pratique.
Merci
Attachments:
You must be logged in to view attached files.7 juillet 2023 à 10:54 #73075MerlinMaître des clésDésolé, je suis trop nul en math et je n’ai pas le temps de chercher.
Mais si quelqu’un peut m’indiquer la formule de base pour calculer une telle moyenne je me ferai un plaisir de la convertir en JavaScript.
7 juillet 2023 à 15:27 #73081michel c.ParticipantCe que je veux faire c’est la même chose que dans la pièce jointe sauf que pour la saisie du temps, au lieu de saisir le nombre d’heures dans un champ (H.+i), le nombre de minutes dans un autre (M.+i) et le nombre de secondes dans un 3ème (S.+i), j’aimerais tout saisir dans un seul sous la forme H:MM:ss
Par contre j’ai une erreur de calcul (là c’est des maths).
Je ne comprend pas pourquoi pour l’exemple que j’ai mis sur 2000m de distance avec un temps de 4min20s, l’allure moyenne aux 500m est de 1min 4s et 10 centièmes alors que si je la calcule, j’ai 1min et 5s.
Calculs :
4min 20s = 260 secondes
Allure moyenne aux 500m :
nombre de minutes : partie entière de (260 * (500/2000*60))
nombre de secondes : partie entière de (60*partie décimale de (260 * (500/2000*60)))
nombre de centièmes de secondes : 10*partie décimale de (60*partie décimale de (260 * (500/2000*60)))
Est ce moi qui m’embrouille dans mes formules?
Merci
PS : Les 5 colonnes de droites me servent pour les calculs intermédiaires, pour ne pas avoir des lignes de calcul à rallonge dans mon code. Si je pouvais je ne les mettrait pas. Sinon, je leur affichage sera non visible.
- Cette réponse a été modifiée le il y a 1 année et 5 mois par michel c..
- Cette réponse a été modifiée le il y a 1 année et 5 mois par michel c..
Attachments:
You must be logged in to view attached files.7 juillet 2023 à 16:23 #73085bebarthMaître des clésbonjour,
Si tu regardes le format de ton champ end.0, tu verras que ce n’est pas un nombre mais une valeur au format H:MM:ss (personnalisé).
Tu ne peux donc pas l’utiliser telle quelle dans ta boucle.@+
😎7 juillet 2023 à 16:28 #73086michel c.ParticipantMerci, je viens de refaire complètement mon document. Il n’y a plus de champs end.0 (voir pièce jointe du message précédent).
Je n’arrive pas à faire ce que je veux avec un champ de saisie unique pour le temps.
J’ai donc crée 3 champs pour cette saisie : heures minutes et secondes.
ça marche bien sauf une erreur d’arrondi (voir message précédent)
Merci
8 juillet 2023 à 08:15 #73087bebarthMaître des clésbonjour,
Je t’ai fait un exemple vite fait car après je pars en vacances…
Script de calcul lorsqu’il n’y a pas beaucoup de champs (cf. premier exemple) :
if (this.getField("distance").value && this.getField("temps").value && this.getField("allureAux").value) {
var Temps=this.getField("temps").value.split(":");
var enSecondes=Number(Temps[0])*3600+Number(Temps[1])*60+Number(Temps[2]);
var regleDe3=enSecondes*this.getField("allureAux").value/this.getField("distance").value;
var lesMinutes=Math.floor(regleDe3/60);
var enSecondes=(regleDe3-lesMinutes*60).toFixed(2).toString().split(".");
var lesSecondes=enSecondes[0];
var lesCentiemes=enSecondes[1];
event.value=lesMinutes+"\'"+util.printf("%,302.0f", lesSecondes)+"\"";
if (lesCentiemes!="00") event.value+=lesCentiemes;
} else event.value="";
Vu que tu as souvent beaucoup de champs, il est préférable de mettre une fonction en script de document et de l’appeler uniquement lorsqu’un champ modifié est désactivé, ce qui évite de lancer le calcul pour tous les champs après chaque évènement (cf. second exemple).
La fonction :
function allure(laDistance,leTemps,lAllureAux) {
if (laDistance && leTemps && lAllureAux) {
var Temps=leTemps.split(":");
var enSecondes=Number(Temps[0])*3600+Number(Temps[1])*60+Number(Temps[2]);
var regleDe3=enSecondes*lAllureAux/laDistance;
var lesMinutes=Math.floor(regleDe3/60);
var enSecondes=(regleDe3-lesMinutes*60).toFixed(2).toString().split(".");
var lesSecondes=enSecondes[0];
var lesCentiemes=enSecondes[1];
this.getField("allure."+ind).value=lesMinutes+"\'"+util.printf("%,302.0f", lesSecondes)+"\"";
if (lesCentiemes!="00") this.getField("allure."+ind).value+=lesCentiemes;
} else this.getField("allure."+ind).value="";
} <code>et tu l'appelles avec :</code> var indice=event.target.name.split(".");
ind=indice[1];
allure(this.getField("distance."+ind).value,this.getField("temps."+ind).value,this.getField("allureAux."+ind).value);
@+
😎- Cette réponse a été modifiée le il y a 1 année et 5 mois par bebarth.
Attachments:
You must be logged in to view attached files.24 juillet 2023 à 15:59 #73113ecluse105ParticipantBonjour, je viens de reprendre à essayer de sortir un script pour le calcul heure, minute, seconde et j’ai fais appelle a chat gpt qui ma sorti un script de calcul qui fonctionne. Ma demande était (Sachant que je parcours un nombre de kilomètre a la vitesse de 9 kilomètres heure de moyenne quel est le temps mis en heures, minutes, secondes), donc il m’a sorti le bon script mais je voudrais le modifier, c’est a dire créer un champ texte dans lequel je puisse moi même définir ma vitesse. Donc ci quelqu’un peux m’aider merci
Attachments:
You must be logged in to view attached files.25 juillet 2023 à 09:52 #73115MerlinMaître des clésPeux tu poster ce script ?
25 juillet 2023 à 12:08 #73116bebarthMaître des clésbonjour,
Voici un exemple avec un champ pour indiquer la vitesse, et le script :
var leTemps=this.getField("ResultatKM").value/this.getField("vitesse").value;
var lesHeures=Math.floor(leTemps);
var resteHeures=leTemps-lesHeures;
var lesMinutes=Math.floor(resteHeures*60);
var lesSecondes=(resteHeures*3600-lesMinutes*60).toFixed(1);
//
if (lesHeures<10) var lesHeures="0"+lesHeures;
if (lesMinutes<10) var lesMinutes="0"+lesMinutes;
if (lesSecondes<10) var lesSecondes="0"+lesSecondes;
//
event.value=lesHeures+":"+lesMinutes+":"+lesSecondes;
Ce script est un peu développé pour une meilleure compréhension.
@+
😎Attachments:
You must be logged in to view attached files.25 juillet 2023 à 12:55 #73118MerlinMaître des clésDu coup chat GT peut aller se rhabiller !
😁
25 juillet 2023 à 13:44 #73119bebarthMaître des clésHeureusement qu’il IA encore nous !
@+
😎 -
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.