Donnez vie à vos documents numériques !
 

Calcul date à date. – RÉSOLU

abracadabraPDF Forums PDF – Général Calcul date à date. – RÉSOLU

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #44619
    jsamica
    Membre

    Bonjour,

    J’ai regardé les posts et à priori pas simple.

    Je souhaite calculer un ombre de jour à partir de deux dates.
    Par exemple, une date d’entrée et la date actuelle me calcul l’ancienneté.

    Est-ce possible ?
    Merci.

    :bonjour:

Affichage de 11 réponses de 1 à 11 (sur un total de 11)
  • Auteur
    Réponses
  • #55485
    Stubiana
    Membre

    Bonjour,

    Pour être précis, tu aurais simplement besoin du nombre de jours ? Ou aussi des heures minutes secondes ?

    Une petite fonction au cas où, elle renvoie le nombre de jours entiers écoulés entre 2 dates.

    function diffdate(d1, d2)
    {
        var jour = Math.abs(d1.getTime() – d2.getTime());
        return Math.floor(jour/(1000*60*60*24));
    }

    Cordialement  :bonjour:

    #55486
    jsamica
    Membre

    Bonjour Stubiana,

    Merci, simplement un nombre années/jours entre les 2 dates

    Par contre, as-tu un exemple concret; s’il te plaît.
    Je comprend pas trop comment tu l’implémentes dans ton formulaire.

    Tu l’ajoutes dans un champs à script de calcul personnalisé ?
    Tu définis avant tes variables d1 et d2 genre :
    d1 = this.getField(“date1”).value;

    Merci pour ces précisions.
    :bonjour:

    #55487
    Stubiana
    Membre

    Merci, simplement un nombre années/jours entre les 2 dates

    La fonction calcule simplement le nombre de jours mais pas le nombre d’années (il suffit de diviser le nombre de jours par 365 pour avoir le nombre d’années)

    Par contre, as-tu un exemple concret; s’il te plaît.
    Je comprend pas trop comment tu l’implémentes dans ton formulaire.

    Tu l’ajoutes dans un champs à script de calcul personnalisé ?
    Tu définis avant tes variables d1 et d2 genre :
    d1 = this.getField(“date1”).value;

    Tout dépend de l’utilisation que tu vas faire de cette fonction.
    Le mieux est de l’ajouter aux scripts du document, comme ça tu pourras l’utiliser simplement en l’appelant, depuis n’importe quel champ.

    Bien sur il faut définir les paramètres que tu vas passer à ta fonction. Prenons un exemple :

    Tu as un champ “Date d’arrivée”, et tu souhaiterais connaitre l’ancienneté de la personne, qui sera affichée dans un autre champ appelé “Ancienneté”.
    On suppose au départ que “Date d’arrivée” est vide, donc “Ancienneté” l’est aussi.
    Lorsque l’utilisateur entrera une date dans le champ “Date d’arrivée”, “Ancienneté” sera mis à jour.

    Il te suffit donc d’ajouter ce script d’action dans le champ “Date d’arrivée” sur l’action “Champ désactivé” :

    if (event.target.value != “”)
    {
        this.getField(“Ancienneté”).value = diffdate(event.target.value, new Date());
    }
    else
    {
        this.getField(“Ancienneté”).value = “”;
    }

    De cette façon, lorsque l’utilisateur entrera une date et passera au champ suivant, “Ancienneté” sera mis à jour  :Smiley01:

    :fleche: Attention : “Date d’arrivée” doit être au format Date, sinon ça ne marchera pas.

    J’espère être assez clair  :siffle:

    Cordialement  :bonjour:

    #55488
    jsamica
    Membre

    Bonjour Stubiana
    Mille merci
    Tu as tapé juste c’est exactement mon besoin à quelques différences prés.

    Par contre je comprend pas comment marche ton script  :doute: cf exemple 1

    Le deuxième exemple correspond exactement à mon besoin de calcul d’une dirrérence de 2 dates vers le champs ancienneté en nombre d’année et jours

    Merci encore
    :bonjour:

    [attachment deleted by admin]

    #55489
    Stubiana
    Membre

    C’est simplement dû à une petite erreur de ma part, essaye avec ça dans l’exemple 2 :

    if (event.target.value != “”)
    {
        var date_depart = util.scand(“dd/mm/yyyy”, event.target.value);
        var date_arrivee = util.scand(“dd/mm/yyyy”,this.getField(“datearrivee”).value);
        this.getField(“anciennete”).value = diffdate(date_depart, date_arrivee);
    }
    else
    {
        this.getField(“anciennete”).value = “”;
    }

    Cordialement  :bonjour:

    #55490
    jsamica
    Membre

    Merci encore

    Je pense qu’on s’approche du but mais sa ne marche toujours pas.  :oh:

    Ci joint l’exemple 2 avec ton script, il me semble avoir suivi tes instructions.

    :Smiley03:

    [attachment deleted by admin]

    #55491
    Stubiana
    Membre

    C’est à cause de “datearrivee”  :Smiley05:

    Des fois tu as écris “datearrivee” et des fois “datearrive”  :geek:

    Cordialement  :bonjour:

    #55492
    jsamica
    Membre

    Salut Stubiana,
    Effectivement mais même après la correction, ça ne marche pas
    :mur:

    Qu’est ce que je fais mal ?  :joker:

    Merci encore pour ton aide
    :bonjour:

    [attachment deleted by admin]

    #55493
    Stubiana
    Membre

    Tu as simplement oublié d’insérer la fonction diffdate aux scripts du document  (Outils > javascript > Scripts Javascript du document) :Smiley03:

    Code:
    function diffdate(d1, d2)
    {
        var jour = Math.abs(d1.getTime() – d2.getTime());
        return Math.floor(jour/(1000*60*60*24));
    }

    Cordialement  :bonjour:

    #55494
    jsamica
    Membre

    oui effectivement ça marche beaucoup mieux.
    Super  :bravo:
    Merci

    :bonjour:

    #55495
    djamel227
    Membre

    Vous allez svp essayer avec celui là,
    Il est super !

    :geek: :geek: :geek:

    [attachment deleted by admin]

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