Sto creando un calendario in cui stampo le settimane in formato tabellare. Un requisito è che io possa iniziare le settimane il lunedì o la domenica, secondo alcune opzioni dell'utente. Sto attraversando un periodo difficile utilizzando il metodo isoWeekday del 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);
}
EDIT Ho frainteso quello che isoWeekday
stava effettivamente facendo. Ho pensato che impostasse la variabile "quale giorno della settimana è il primo giorno della settimana" (che non esiste). Quello che in realtà fa è semplicemente cambiare il giorno della settimana, proprio come moment.weekday()
, ma utilizza un intervallo 1-7 invece di 0-6.
startOf('week')
dipende dalla località in cui la domenica ovviamente segna l'inizio della settimana nel tuo caso.startOf('iweek')
otterrà l'inizio ISO della settimana, che è lunedì. Ma hai ragione, non ho trovato alcuna documentazione sul sito ufficiale ...