我正在创建一个日历,以表格格式打印出数周。一个要求是,根据某些用户的选择,我可以在星期一或星期日开始几周。我使用矩的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开始,即星期一。但是您是对的,我在官方网站上没有找到任何文档...