Estoy creando un calendario en el que imprimo semanas en formato tabular. Un requisito es que pueda comenzar las semanas el lunes o el domingo, según alguna opción del usuario. Estoy teniendo dificultades para usar el método isoWeekday de 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);
}
EDITAR Entendí mal lo que isoWeekday
estaba haciendo en realidad. Pensé que establecía la variable "qué día de la semana es el primer día de la semana" (que no existe). Lo que realmente hace es simplemente cambiar el día de la semana, como moment.weekday()
, pero usa un rango 1-7 en lugar del 0-6.
startOf('week')
depende de la ubicación actual donde el domingo obviamente marca el comienzo de la semana en su caso.startOf('iweek')
obtendrá el inicio ISO de la semana, que es el lunes. Pero tienes razón, no encontré ninguna documentación en el sitio oficial ...