1. ホーム
  2. javascript

[解決済み] isoWeekday()で月曜日から1週間を始める

2022-06-24 11:19:39

質問

表形式で週をプリントアウトするカレンダーを作成しています。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);
}

jsFiddle

EDIT 私は何を誤解していたのか isoWeekday が実際にやっていたことを誤解していました。私はそれが"週のどの日が週の最初の日であるか"変数(それは存在しない)を設定すると思っていました。実際にやっていることは、単に曜日を変更するだけです。 moment.weekday() と同じように曜日を変更するだけですが、0-6の代わりに1-7の範囲を使用します。

どのように解決するのですか?

を置き換えるだけです。 begin.startOf('isoWeek');begin.startOf('week'); .