Estou criando um calendário onde imprimo semanas em formato tabular. Um dos requisitos é que eu possa começar as semanas na segunda ou no domingo, conforme alguma opção do usuário. Estou tendo dificuldade em usar o método isoWeekday do momento .
// 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);
}
EDITAR Eu entendi mal o que isoWeekday
estava realmente fazendo. Pensei que definisse a variável "qual dia da semana é o primeiro dia da semana" (que não existe). O que ele realmente faz é simplesmente alterar o dia da semana, assim como moment.weekday()
, mas usa um intervalo de 1-7 em vez de 0-6.
startOf('week')
depende do local atual onde o domingo obviamente marca o início da semana no seu caso.startOf('iweek')
obterá o ISO de início da semana, que é segunda-feira. Mas você está certo, eu não encontrei nenhuma documentação no site oficial ...