Donnez vie à vos documents numériques !
 

Calculer le numero d’une semaine depuis septembre et non janvier

abracadabraPDF Forums PDF – Général Calculer le numero d’une semaine depuis septembre et non janvier

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #44976
    rattlesnake
    Membre

    Bonjour à tous,

    Je suis en train de me casser les dents sur un calcul de date.
    J’ai trouver ce script qui fonctionne très bien pour calculer la semaine en cours (en partant de janvier) :
    https://answers.acrobatusers.com/ISO-8601-Week-Number-from-a-Date-Field-q7168.aspx

    Code:
    // get the date string value
    var sDate = this.getField(« date »).value;
    // dispaly the stirng
    console.println(« sDate:  » + sDate);
    // create the date object
    var oDate = util.scand(« d/m/yyyy », sDate);
    // display the date object
    console.println(‘oDate: ‘ + oDate);
    // set the value for this field
    event.value = getWeek(oDate,0);function getWeek(d, dowOffset) {

    var newYear = new Date(d.getFullYear(),0,1);
    var day = newYear.getDay() – dowOffset; //the day of week the year begins on
    day = (day >= 0 ? day : day + 7);
    var daynum = Math.floor((d.getTime() – newYear.getTime() –
    (d.getTimezoneOffset()-newYear.getTimezoneOffset())*60000)/86400000) + 1;
    var weeknum;
    //if the year starts before the middle of a week
    if(day weeknum = Math.floor((daynum+day-1)/7) + 1;
    if(weeknum > 52) {
    nYear = new Date(d.getFullYear() + 1,0,1);
    nday = nYear.getDay() – dowOffset;
    nday = nday >= 0 ? nday : nday + 7;
    /*if the next year starts before the middle of
    the week, it is week #1 of that year*/
    weeknum = nday }
    }
    else {
    weeknum = Math.floor((daynum+day-1)/7);
    }
    return weeknum;
    };

    Make sure you date entry field’s format is set to « d/m/yyyy » and the date entry is date / month / full year.

    Simplement mes semaines a moi commencent à partir de septembre.
    Du 01 au 07 septembre = semaine 1.

    J’ai essayer de jouer avec le dowOffset (normalement entre 0 et 6 pour choisir le jour de la semaine) pour décaler mes jours :

    Code:
    event.value = getWeek(oDate,250); // 250 étant le nombre de jours entre le 1er janvier et le 1er septembre

    Et cela fonctionne bien pour les semaines entre septembre et décembre. Mais en passant a janvier, février… les semaines deviennent folles.

    Une âme charitable pourrait tenter de jeter un coup d’oeil ? :Smiley00:

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

    Bonjour,

    Ce ne serait pas plus simple d’utiliser le script tel quel et de retrancher du résultat le nombre de semaines entre le 01/01 et le 01/09 ?
    :doute:

    #57773
    rattlesnake
    Membre

    Merci de ta réponse Merlin.

    Malheuresement ça serait trop facile ^^

    Admettons que je fasse :
    event.value = (getWeek(oDate1,0)) -37; // 37 correspond au nombre de semaines qui séparent le 01/01 du 01/09

    Ca fonctionne bien jusqu’a Decembre. Mais forcément en janvier, je part avec une semaine -36 au lieu d’une semaine 17

    Les manipulations de date c’est pas evident  :mur:

    #57774
    Merlin
    Maître des clés

    Et si on testait le résultat de : event.value = (getWeek(oDate1,0)) -37; ?
    Si le résultat est positif = OK.
    Si le résultat est négatif on rajoute 37.
    :idee:

    #57775
    rattlesnake
    Membre

    Mmmh bien joué a premiere vue cela semble fonctionner comme ceci :
    A ton avis il ne devrait pas y avoir de soucis de « glissement » de semaine du fait de la longueur des mois, du changement d’année etc ?
    (Je ferai quelques tests en rentrant ce soir)

    Code:
    var week = (getWeek(oDate1,0))-35; // C’était -35 et pas -37
    //app.alert(week);

    if (week > 0)
    {
    event.value = week;
    }

    else
    {
    event.value = week+35+18; // Si on ajoute seulement 35, on repart à 1. Il faut donc rajouter encore 18
    }

    #57776
    Merlin
    Maître des clés

    Je ne suis sur de rien, je lance des ballons d’essai…
    :joker:

    #57777
    rattlesnake
    Membre

    Merci Merlin, je n’ai pas noté de problème, tout me semble opérationnel :D

    Tu m’as sauvé  :geek:

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