web-dev-qa-db-ja.com

Moment.jsの最初の曜日が正しくありません

私は初めてMoment.jsを使用しています。週の最初の日付を取得しようとしましたが、ヨーロッパでは通常月曜日です。何をするにしても、週の最初の日の結果として日曜日になります。

さまざまな言語(ローカルまたはグローバル)を設定しようとしましたが、役に立ちませんでした。 moment.js github page のlangs.min.jsファイルを使用します。 "en-gb"および "fr" の言語ファイルには、次のコード行があります。

_dow : 1, // Monday is the first day of the week.
_

それで、私が週の最初の日を尋ねるとき、私は月曜日の日付を得るでしょう?日曜日を出力として取得し続けます。

_// Create moment object
var localLang = moment();

// Set language to french
localLang.lang('fr');

// Test language
localLang.lang(); // Output: fr

// Retrieve first day of the week and format it
var dow = localLang.startOf('week').format('dddd DD-MM-YYYY'); // Output: dimanche 14-04-2013
_

Dimancheは日曜日はフランス語です。ご覧のとおり、moment.jsは言語ファイルを正常に使用できますが、曜日の構成は使用しません。

テストするmoment.jsとlangs.jsを使用したJSfiddle: JSFiddle

編集:day(1)の代わりにstartOf('week')を使用すると、日曜日の代わりに月曜日の日付を取得できます。しかし、day(0)を使用すると、結果として日曜日になります。言語ファイルで構成されているように、月曜日が週の最初の日ではないのはなぜですか。

17
JSS

最近この質問に出くわした人のために、今ではロケール固有の設定を設定するためのlangメソッドをサポートしています。

最初の週を月曜日に設定:

moment.lang('zh-cn', {
    week : {
        dow : 1 // Monday is the first day of the week
    }
});

var date = moment().weekday(0); // date now is the first day of the week, (i.e., Monday)
35
jasonslyvia

ロケール対応の平日を追加するよう取り組んでいますが、まだ完了していません。

https://github.com/timrwood/moment/issues/613#issuecomment-13786429

6
timrwood