web-dev-qa-db-de.com

nächste Woche beginnen und enden mit jquery und moment js

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. 

30
Venkata Tata

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; 
        }
12
Venkata Tata

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. 

125
Dr. Acula

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
*/

http://jsfiddle.net/WGXxn/3/

5
meze
    //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)
0