Я создаю календарь, в котором распечатываю недели в табличном формате. Одно из требований состоит в том, чтобы я мог начинать недели в понедельник или воскресенье, в зависимости от выбора пользователя. Мне сложно использовать метод isoWeekday момента .
// 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);
}
ИЗМЕНИТЬ Я неправильно понял, что на isoWeekday
самом деле происходит. Я думал, что он устанавливает переменную «какой день недели является первым днем недели» (которой не существует). На самом деле он просто меняет день недели, точно так же moment.weekday()
, но использует диапазон от 1 до 7 вместо 0-6.
startOf('week')
зависит от текущего местоположения, где воскресенье, очевидно, знаменует начало недели в вашем случае.startOf('iweek')
получит начало недели по ISO, то есть понедельник. Но ты прав, я не нашел никакой документации на официальном сайте ...