Я створюю календар, де друкую тижні у форматі таблиць. Однією з вимог є те, що я можу розпочати тижні або в понеділок, або в неділю, відповідно до деяких варіантів користувача. Мені важко застосовувати моментний метод 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);
}
EDIT Я неправильно зрозумів, що isoWeekday
насправді робить. Я думав, що вона встановлює змінну "який день тижня - перший день тижня" (що не існує). Насправді це просто змінює день тижня, як і колись moment.weekday()
, але використовує діапазон 1-7 замість 0-6.
startOf('week')
залежить від поточного місцевого розташування, у якому неділя очевидно позначає початок тижня у вашому випадку.startOf('iweek')
отримає початок тижня ISO, що є понеділком. Але ти маєш рацію, я не знайшов жодної документації на офіційному сайті ...