Ich habe nach dieser Frage gesucht und festgestellt, dass es keine Antwort auf Stackoverflow gibt. Also entschied ich mich, sie zu beantworten ...
Diese Frage ist hilfreich, wenn Sie den Beginn/Ende der nächsten/letzten Woche mit Montag als Wochenbeginn benötigen.
Ich habe Moment js dafür benutzt ... du kannst es von hier bekommen
/*
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;
}
Ein bisschen zu spät zur Party, aber hier ist der einfachste Weg, die ich gefunden habe, um Anfang/Ende von Wochen auszudrücken. Das Argument isoWeek
beginnt wochenlang am Montag gemäß ISO 8601 , während week
wochen abhängig von Ihrem Gebietsschema (also wahrscheinlich entweder Sonntag oder Montag) beginnt.
Diese Woche:
moment().startOf('isoWeek')
moment().endOf('isoWeek')
Nächste Woche:
moment().add(1, 'weeks').startOf('isoWeek')
moment().add(1, 'weeks').endOf('isoWeek')
Letzte Woche:
moment().subtract(1, 'weeks').startOf('isoWeek')
moment().subtract(1, 'weeks').endOf('isoWeek')
Ich mag diese Konstruktionen, weil sie unglaublich lesbar sind. Sie können auch beliebig viele Wochen vor- oder zurückgehen, indem Sie angeben, wie viele Wochen Sie in subtract
oder add
wünschen.
Dies ist in der Lang-Datei angegeben. Sie können die Datei lang/en-au.js
oder lang/en-gb.js
einschließen und den gewünschten Sprachstandard festlegen. Angenommen, Sie sind in Großbritannien:
moment.lang('en-gb');
Wenn Sie keine benutzerdefinierte Sprache verwenden möchten, können Sie sie für das Standardgebietsschema in den USA ändern:
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.
}
});
Dann können Sie tun:
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)