Подтвердить что ты не робот

Получить на следующей неделе начало и конец с использованием jquery и момента js

Я искал этот вопрос и обнаружил, что ответа на Stackoverflow нет. Поэтому я решил ответить на него...

Этот вопрос помогает, если вам нужно начать/завершить следующую/последнюю неделю с понедельника в начале недели.

4b9b3361

Ответ 1

Я использовал момент js для этого... вы можете получить его из здесь

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

Ответ 2

Немного поздно для вечеринки, но вот самый простой способ, который я нашел, чтобы выразить начало/конец недель. Аргумент 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.

Ответ 3

Это указано в файле 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 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
*/

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