Donnez vie à vos documents numériques !
 

Code pour calculer heures, minutes, secondes

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.
  • Créateur
    Sujet
  • #73031
    ecluse105
    Participant

    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

Affichage de 23 réponses de 1 à 23 (sur un total de 23)
  • Auteur
    Réponses
  • #73032
    Merlin
    Maî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.
    #73034
    ecluse105
    Participant

    J’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.

    #73035
    Merlin
    Maître des clés

    Du 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

    #73050
    michel c.
    Participant

    J’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.
    #73052
    ecluse105
    Participant

    Pour 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é.

    #73053
    michel c.
    Participant

    J’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.
    #73055
    Merlin
    Maître des clés

    Quand 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:Calculate

     

    Donc 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.

    #73058
    bebarth
    Maître des clés

    bonjour,
    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).

    @+
    😎

    #73061
    michel c.
    Participant

    Bonjour, 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.
    #73063
    bebarth
    Maître des clés

    Il 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.
    #73067
    michel c.
    Participant

    Effectivement, 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 par michel c..
    Attachments:
    You must be logged in to view attached files.
    #73070
    bebarth
    Maître des clés

    Je 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.
    #73073
    michel c.
    Participant

    Bonjour, 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.
    #73075
    Merlin
    Maître des clés

    Dé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.

    #73081
    michel c.
    Participant

    Ce 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 par michel c..
    • Cette réponse a été modifiée le il y a 1 année par michel c..
    Attachments:
    You must be logged in to view attached files.
    #73085
    bebarth
    Maître des clés

    bonjour,
    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.

    @+
    😎

    #73086
    michel c.
    Participant

    Merci, 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

    #73087
    bebarth
    Maître des clés

    bonjour,
    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 par bebarth.
    Attachments:
    You must be logged in to view attached files.
    #73113
    ecluse105
    Participant

    Bonjour, 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.
    #73115
    Merlin
    Maître des clés

    Peux tu poster ce script ?

    #73116
    bebarth
    Maître des clés

    bonjour,
    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.
    #73118
    Merlin
    Maître des clés

    Du coup chat GT peut aller se rhabiller !

    😁

    #73119
    bebarth
    Maître des clés

    Heureusement qu’il IA encore nous !

    @+
    😎

Affichage de 23 réponses de 1 à 23 (sur un total de 23)
  • Vous devez être connecté pour répondre à ce sujet.