Donnez vie à vos documents numériques !
 

Calcul sur des dates. – RÉSOLU

abracadabraPDF Forums PDF – Général Calcul sur des dates. – RÉSOLU

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #44291
    lagentejl
    Membre

    Bonjour,

    J’ai créé un formulaire (sous Acrobat X) où je dois faire différents calculs sur des dates.
    J’ai un champ initial « DDG« 
    De cette date, je voudrais « TP = DDG + 39 semaines » sous la forme jj/mmmm/yyyy
    Je voudrai également une différence entre 2 dates « DATE – DDG + 2 semaines » mais il faut que le résultat soit en semaines et jours. Résultat possible sur 2 cellules.
    J’ai regardé partout sur le forum est sur internet, mais je n’ai rien trouvé.
    Je vous remercie pour vos réponses.

    Bon après-midi.  :soleil:

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

    Salut,

    Le calcul de dates en JavaScript n’est pas une mince affaire et requiert de bonnes connaissances…
    il faut convertir la date courante en millisecondes depuis une date donnée (Epoch date), faire les calculs, et re-convertir en date du calendrier Grégorien…

    – On peut s’inspirer de ce formulaire qui contient des calculs de date (échéancier) : http://abracadabrapdf.net/articles.php?lng=fr&pg=622

    – On peut utiliser ce tuto très complet et très bien fait par Thom Parker : http://acrobatusers.com/tutorials/date_time_part1

    – On peut utiliser ce script prêt-à-l’emploi mais payant, bien que pas cher du tout : http://try67.blogspot.fr/2012/01/acrobat-apply-automatic-date.html

    :Smiley15:

    #53697
    alex
    Membre

    Quelques lignes pour comprendre et se lancer:
    //obtenir l’objet date:
    hd=new Date();
    //Afficher la date dans le champ « AffichageDate.0 » à créer:
    this.getField(« AffichageDate.0 »).value=util.printd(« dd-mm-yy »,hd)
    this.getField(« AffichageDate.0″).userName= »Date au format jj-mm-aa »;
    //Afficher l’heure dans le champ « AffichageDate.1 » à créer:
    this.getField(« AffichageDate.1 »).value=util.printd(« HH-MM-ss »,hd);
    this.getField(« AffichageDate.1″).userName= »Heure au format hh-mm-ss »;

    Créer une date et l’afficher dans le champ « AffichageDate.3 » à créer:
    hdo=new Date();
    hdo.setFullYear(2010);
    hdo.setMonth(11);
    hdo.setDate(1);
    hdo.setHours(12);
    hdo.setMinutes(30);
    ddo=util.printd(« dd-mmmm-yyyy »,hdo);
    this.getField(« AffichageDate.3 »).value= »Le « +ddo+ » à « +util.printd(« HH-MM »,hdo);
    this.getField(« AffichageDate.3″).userName= »Format libre »;

    //calculer la différence entre deux dates:
    debut=util.printd(« dd-mm-yy »,hdo);
    fin=util.printd(« dd-mm-yy »,hd);
    console.println(« Calcul d’un intervalle de temps du « +debut+ » au « +fin);
    delta=(hd.valueOf()-hdo.valueOf())/1000/60/60/24;
    console.println(« Intervalle de temps en jours : « +delta);
    this.getField(« AffichageDate.4 »).value= »Nombre de jours= »+delta;
    this.getField(« AffichageDate.4″).userName= »En jours »;
    //pour mémoire:
    semaine=1000*60*60*24*7;

    A vous de jouer…

    #53698
    Merlin
    Maître des clés

    Waow !
    :bravo:  :extra:

    #53699
    alex
    Membre

    Qui donne la solution exacte au problème posé par lagentejl ?
    Je n’ai pas dit comment récupérer l’objet date à partir d’un champ de texte  au format date… ou de format libre.
    A suivre.

    #53700
    lagentejl
    Membre

    :bravo: Merci beaucoup.  :bonjour:
    Je vais tester tout ça  :Smiley08:
    Bonne soirée

    #53701
    alex
    Membre

    Si vous rencontrez des difficultés, n’hésitez pas… La manipulation et les calculs de dates en JavaScript comme en PHP ne sont pas évidentes.
    Je donnerai la solution avec une maquette lundi sauf si quelqu’un veut bien me doubler. Bon week-end.

    #53702
    lagentejl
    Membre

    J’ai réussi avec un code « plus court ».

    DateString = this.getField(‘DDG’).value;
    DateDG = util.scand(‘dd mmmm yyyy’, DateString);
    DateCurrent = util.scand(‘dd mmmm yyyy’, this.getField(‘DATE’).value);
    DiffJour = Math.round((DateCurrent.getTime() – DateDG.getTime())/(1000*3600*24));
    Semaines = Math.floor(DiffJour/7);
    Jours = DiffJour – Semaines*7;
    this.getField(‘DDR’).value = util.printf(Semaines +  » semaine(s) et  » +  Jours +  » jour(s) »);

    En tout cas merci encore pour toutes les pistes que vous m’avez données.  :Smiley08:

    Bonne journée

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