- Ce sujet est vide.
-
Sujet
-
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.aspxCode:// 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 < 4) {
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 < 4 ? 1 : 53;
}
}
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 septembreEt 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:
- Vous devez être connecté pour répondre à ce sujet.