web-dev-qa-db-fra.com

obtenir le début et la fin de la semaine prochaine en utilisant jquery et moment js

J'ai cherché cette question et trouvé qu'il n'y avait pas de réponse à Stackoverflow .. J'ai donc décidé d'y répondre ...

Cette question est utile si vous devez connaître le début/la fin de la semaine suivante/la dernière/avec lundi comme début de semaine. 

30
Venkata Tata

J'ai utilisé moment js pour cela ... vous pouvez l'obtenir de ici

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

Un peu tard pour la fête mais voici le moyen le plus simple que j'ai trouvé pour exprimer des débuts/fins de semaines. L'argument isoWeek commence des semaines le lundi conformément à ISO 8601 , tandis que week commence des semaines en fonction de la localisation (donc probablement dimanche ou lundi). 

Cette semaine: 

moment().startOf('isoWeek')
moment().endOf('isoWeek')

Prochaine semaine:

moment().add(1, 'weeks').startOf('isoWeek')
moment().add(1, 'weeks').endOf('isoWeek')

La semaine dernière: 

moment().subtract(1, 'weeks').startOf('isoWeek')
moment().subtract(1, 'weeks').endOf('isoWeek')

J'aime ces constructions parce qu'elles sont incroyablement lisibles. Il est également facile de revenir en arrière ou d'avancer n'importe quel nombre de semaines en spécifiant le nombre de semaines souhaité dans subtract ou add

125
Dr. Acula

Ceci est spécifié dans le fichier lang , vous pouvez inclure le fichier lang/en-au.js ou lang/en-gb.js et définir le standard de langue souhaité. Supposons que vous êtes au Royaume-Uni:

moment.lang('en-gb');

Si vous ne souhaitez pas utiliser une langue personnalisée, vous pouvez la modifier pour les paramètres régionaux américains par défaut:

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.
    }
});

Ensuite, vous pouvez faire:

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
Sreekanth Karini