Je crée un calendrier dans lequel j'imprime des semaines dans un format tabulaire. Une condition est que je puisse commencer les semaines le lundi ou le dimanche, selon certaines options de l'utilisateur. J'ai du mal à utiliser la méthode isoWeekday du moment .
// Start of some date range. Can be any day of the week.
var startOfPeriod = moment("2013-06-23T00:00:00"),
// We begin on the start of the first week.
// Mon Tues Wed Thur Fri Sat Sun
// 20 21 22 23 24 25 26
begin = moment(startOfPeriod).isoWeekday(1); // will pull from user setting
console.log(begin.isoWeekday()); // 1 - all good
// Let's get the beginning of this first week, respecting the isoWeekday
begin.startOf('week');
console.log(begin.isoWeekday()); // 7 - what happened ???
// Get column headers
for (var i=0; i<7; i++) {
console.log(begin.format('ddd')); // I want Monday first!
begin.add('d', 1);
}
EDIT J'ai mal compris ce que isoWeekday
faisait réellement. Je pensais qu'il définissait la variable "quel jour de la semaine est le premier jour de la semaine" (qui n'existe pas). En fait, il change simplement le jour de la semaine, tout comme moment.weekday()
, mais utilise une plage de 1 à 7 au lieu de 0 à 6.
startOf('week')
dépend de la localisation actuelle où dimanche marque évidemment le début de la semaine dans votre cas.startOf('iweek')
obtiendra le début ISO de la semaine, qui est lundi. Mais vous avez raison, je n'ai trouvé aucune documentation sur le site officiel ...