この質問を検索しましたが、Stackoverflowには答えがありませんでした。
この質問は、月曜日を週の始まりとして来週/先週の開始/終了を取得する必要がある場合に役立ちます。
これにモーメントjsを使用しました... here から取得できます
/*
all functions return moment() object.. <br>
GetNextWeekStart().format('DD/MM/YYYY') to get 24/02/2014
*/
function GetNextWeekStart() {
var today = moment();
//edited part
var daystoMonday = 0 - (today.isoWeekday() - 1) + 7;
var nextMonday = today.subtract('days', daystoMonday);
return nextMonday;
}
function GetNextWeekEnd() {
var nextMonday = GetNextWeekStart();
var nextSunday = nextMonday.add('days', 6);
return nextSunday;
}
function GetLastWeekStart() {
var today = moment();
var daystoLastMonday = 0 - (1 - today.isoWeekday()) + 7;
var lastMonday = today.subtract('days', daystoLastMonday);
return lastMonday;
}
function GetLastWeekEnd() {
var lastMonday = GetLastWeekStart();
var lastSunday = lastMonday.add('days', 6);
return lastSunday;
}
パーティーに少し遅れましたが、ここに、週の始まり/終わりを表現するために見つけた最も簡単な方法があります。 isoWeek
引数は ISO 8601 に従って月曜日に週を開始しますが、week
はロケールに応じて週を開始します(したがって、おそらく日曜日または月曜日)。
今週:
moment().startOf('isoWeek')
moment().endOf('isoWeek')
来週:
moment().add(1, 'weeks').startOf('isoWeek')
moment().add(1, 'weeks').endOf('isoWeek')
先週:
moment().subtract(1, 'weeks').startOf('isoWeek')
moment().subtract(1, 'weeks').endOf('isoWeek')
これらの構造は信じられないほど読みやすいので気に入っています。 subtract
またはadd
に必要な週数を指定することにより、任意の数の週を前後に移動することも簡単です。
これは langファイル で指定され、lang/en-au.js
またはlang/en-gb.js
ファイルし、目的の言語標準を設定します。あなたが英国にいると仮定します:
moment.lang('en-gb');
カスタム言語を使用したくない場合は、デフォルトの米国ロケールに合わせて変更できます。
moment.lang('en-custom', {
week: {
dow: 1,
doy: 6 // Adjust the first week of the year, depends on the country. For the US it's 6. For the UK, 4.
}
});
その後、次のことができます。
var date = '2014-03-24';
console.log('next start', moment(date).weekday(7).format('DD/MM/YYYY'));
console.log('next end', moment(date).weekday(13).format('DD/MM/YYYY'));
console.log('prev start', moment(date).weekday(-7).format('DD/MM/YYYY'));
console.log('prev end', moment(date).weekday(-1).format('DD/MM/YYYY'));
console.log('current start', moment(date).weekday(0).format('DD/MM/YYYY'));
console.log('current end', moment(date).weekday(6).format('DD/MM/YYYY'));
/*
next start 31/03/2014
next end 06/04/2014
prev start 17/03/2014
prev end 23/03/2014
current start 24/03/2014
current end 30/03/2014
*/
//Last week (get current week array list from momentjs)
var sd = moment(currentWeekFd[0]).subtract(7, 'days').format();
var ed = moment(currentWeekEd[6]).subtract(7, 'days').format();
var lastWeekStratDay = moment(sd).format('YYYY-MM-DD');
var lastWeekEndDay = moment(ed).format('YYYY-MM-DD');
console.log(lastWeekStratDay +', '+ lastWeekEndDay)
//Next week
var sd = moment(currentWeekFd[0]).add(7, 'days').format();
var ed = moment(currentWeekEd[6]).add(7, 'days').format();
var nextWeekStratDay = moment(sd).format('YYYY-MM-DD');
var nextWeekEndDay = moment(ed).format('YYYY-MM-DD');
console.log(nextWeekStratDay +', '+ nextWeekEndDay)