Bonjour,

J'ai trouvé cet objet à cette adresse: http://techblog.procurios.nl/k/news/...avascript.html (Post du 02-08-2011). Mais ce code ne fonctionne pas pendant l'heure d'été (voir commentaire) puisque le timestamp est décalé d'une heure.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
//The following function is tested to work correctly (ISO 8601) with all Dec 31st and Jan 1st between 1970 and 2030:
 
Date.prototype.getWeek = function () {
// Based on: http://techblog.procurio...year-in-javascript.html
// La ligne suivante ne fonctionne pas pendant l'heure d'été
//var targetThursday = new Date(this.getFullYear(),this.getMonth(),this.getDate()); // Remove time components of date
var targetThursday = new Date(this.getFullYear(),this.getMonth(),this.getDate(), this.getHours());
targetThursday.setDate(targetThursday.getDate() - ((targetThursday.getDay() + 6) % 7) + 3); // Change date to Thursday same week
var firstThursday = new Date(targetThursday.getFullYear(), 0, 4); // Take January 4th as it is always in week 1 (see ISO 8601)
firstThursday.setDate(firstThursday.getDate() - ((firstThursday.getDay() + 6) % 7) + 3); // Change date to Thursday same week
var weekDiff = (targetThursday - firstThursday) / (86400000*7); // Number of weeks between target Thursday and first Thursday
return 1 + weekDiff;
}
J'ai donc modifié la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
var targetThursday = new Date(this.getFullYear(),this.getMonth(),this.getDate(), this.getHours());
mais je ne suis pas sûr de mon coup. D'une part l'heure change et impose des problèmes d'arrondis, d'autre part je risque d'avoir des problèmes à l'heure d'hiver. J'ai aussi pensé remplacer le getHours par une constante 3600 * 1000 mais ça ne changera rien au problème. Avez-vous des idées?
La discussion sur l'heure d'été qui suit le post du 02-08-2011 semble controversée.