週を表形式で印刷するカレンダーを作成しています。1つの要件は、一部のユーザーオプションに従って、月曜日または日曜日のいずれかに週を開始できることです。瞬間の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()
0〜6ではなく1〜7の範囲を使用します。
startOf('week')
現在のロケールに依存しますが、日曜日は明らかにあなたの場合の週の始まりを示します。startOf('iweek')
月曜日である週のISO開始を取得します。しかし、あなたは正しいです、私は公式サイトでドキュメントを見つけませんでした...