Donnez vie à vos documents numériques !
 

Calcul heures dans un formulaire PDF

abracadabraPDF Forums PDF – Général Calcul heures dans un formulaire PDF

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #46653
    AlDrey
    Membre

    Bonjour à tous … et toutes,

    Je suis tout nouveau sur le Forum (quelques minutes). Mon problème.J’ai un formulaire dans lequel l’utilisateur entre des durées passées chez des clients.J’aurais besoin de faire le total en heures et minutes de la journée, sachant que j’ai 7 champs “Durée” numérotés de 1 à 7.
    Voir fichier joint.
    Pensant me simplifier la tâche, j’ai inscrit en nombre les minutes passées avec chaque client et ait fait un “total heures” (en haut et à droite)qui me donne bien le total des minutes (390).
    Question :

    1. sur ce schéma, comment convertir ce total de minutes (390 dans cet exemple) en heures et minutes,
    2. Trouver une solution pour entrer dans chaque occurence le temp passé en heures/minutes (1:20) et avoir le cumul en haut et à droite de la journée.
    3. [/list]

      Merci de votre aide.

Affichage de 5 réponses de 1 à 5 (sur un total de 5)
  • Auteur
    Réponses
  • #69607
    Merlin
    Maître des clés

    Bonjour et bienvenue

    Ce sont des sujets déjà abordé dans ce forum.
    Le mieux serait que tu commences par faire une recherche afin de dégrossir la problématique, ensuite n’hésites pas à revenir avec des questions si ça coince.

    #69608
    bebarth
    Maître des clés

    bonjour,
    Voici un fichier exemple.
    @+
    :bonjour:

    #69609
    michel c.
    Participant

    Bonjour, je ne comprends pas trop le javascript de document (j’ai du mal avec les fonctions)

    Code:
    function Time2Num(sFormat, sTime) {
        if(sTime==””) return “”; // exit
        // get date time for Epoch date and sTime
        var oTime=util.scand(“mm/dd/yyyy “+sFormat, “01/01/1970 “+sTime);
        // convert UTC Offset to milliseonds for adjustment
        var fTZOffset=oTime.getTimezoneOffset()*1000*60
        // time since the start of the day in millseconds
        var fTime=oTime.valueOf()-fTZOffset;
        // convert to seconds and return value
        return Math.round(fTime/1000);
    }

    Voici ce que je comprend :

    Code:
    function Time2Num(sFormat, sTime)

    Je suppose que l’on déclare la fonction TimeNum ayant comme paramètres sFormat et sTime

    Code:
    if(sTime==””) return “”; // exit

    Si la variable sTime est non vide alors on abandonne l’exécution de la fonction
    Par contre ensuite, je ne comprend pas pourquoi il n’y a pas “else”
     

    Code:
    // get date time for Epoch date and sTime
        var oTime=util.scand(“mm/dd/yyyy “+sFormat, “01/01/1970 “+sTime);

    On déclare la variable oTime par contre la fonction util.scand d’après mes recherches sert à convertir la chaine mm/dd/yyyy en secondes (je ne suis pas sûr) mais je ne sais pas trop comment et je ne sais pas à quoi servent les paramètres qui suivent

    Code:
        // convert UTC Offset to milliseonds for adjustment
        var fTZOffset=oTime.getTimezoneOffset()*1000*60

    On déclare la variable fTZOffset mais je ne comprends pas trop la suite…
    Pour la suite je pourrais peut être la comprendre seul si j’avais la réponse à ces interrogations.
    Merci

    #69610
    bebarth
    Maître des clés

    bonjour,
    Pour tout savoir (ou presque) sur les dates, cf. les 2 liens suivants :
    https://www.w3schools.com/jsref/jsref_obj_date.asp (en anglais)
    https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Date (en français)

    Voici une explication pour le script de document :

    Code:
    // Fonction “Time2Num” selon 2 paramètres : le format et le temps
    function Time2Num(sFormat, sTime) {
        // Sortie de la fonction si sTime==”” donc pas besoin de “else”
        if(sTime==””) return “”;
        // Conversion de la date en un objet Date JavaScript selon les règles d’une chaîne de format
        var oTime=util.scand(“mm/dd/yyyy “+sFormat, “01/01/1970 “+sTime);
        // Conversion du décalage UTC en millisecondes
        var fTZOffset=oTime.getTimezoneOffset()*1000*60;
        // Temps depuis le début de la journée en millisecondes
        var fTime=oTime.valueOf()-fTZOffset;
        // Conversion en secondes et renvoi de la valeur
        return Math.round(fTime/1000);
    }

    Le script de calcul était déjà commenté dans le fichier exemple :

    Code:
    event.value=””;
    // Somme
    var somme=Time2Num(“hh:mm”, this.getField(“TimeTotal.0”).value)+Time2Num(“hh:mm”, this.getField(“TimeTotal.1”).value);
    // Conversion arrondie en minutes
    var enminutes=Math.round(somme/60);
    // Heures
    var heures=Math.floor(enminutes/60);
    // Minutes
    var minutes=((enminutes/60)-heures)*60;
    // Format des Minutes avec zéro
    var min=util.printf(“%,302.0f”, minutes);
    // Construction de la chaîne d”affichage
    event.value=heures+”:”+min;

    @+
    :bonjour:

    #69611
    bebarth
    Maître des clés

    bonjour,
    Voici ton fichier complété avec les scripts.
    Si je peux te conseiller, tu devrais jeter un oeil sur les tutos de Merlin :
    https://www.abracadabrapdf.net/category/ressources-et-tutos/
    … et notament :
    https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/duplication-rapide-de-champs-de-formulaire/
    @+
    :bonjour:

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