下周使用jquery和moment js开始和结束

Ven*_*ata 31 javascript jquery daterangepicker momentjs

我搜索了这个问题,发现Stackoverflow上没有答案..所以我决定回答它......

如果您需要将星期一作为周开始的下一个/上周的开始/结束,这个问题会有所帮助.

Dr.*_*ula 138

派对有点晚,但这是我发现表达周的开始/结束的最简单的方法.isoWeek根据ISO 8601,该论点在周一开始几周,而根据您的语言环境week开始几周(因此可能是周日或周一).

本星期:

moment().startOf('isoWeek')
moment().endOf('isoWeek')
Run Code Online (Sandbox Code Playgroud)

下周:

moment().add(1, 'weeks').startOf('isoWeek')
moment().add(1, 'weeks').endOf('isoWeek')
Run Code Online (Sandbox Code Playgroud)

上个星期:

moment().subtract(1, 'weeks').startOf('isoWeek')
moment().subtract(1, 'weeks').endOf('isoWeek')
Run Code Online (Sandbox Code Playgroud)

我喜欢这些结构,因为它们非常易读.它也很容易回去或通过指定要在多少个星期提出任何数周subtractadd.


Ven*_*ata 13

我用了这个时刻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; 
        }
Run Code Online (Sandbox Code Playgroud)

  • 这不起作用(不再?) - 在`GetNextWeekStart`中,如果`today`是星期二我得到以下内容:`> today.format('ddd,DM-Y'); 输出:'星期二,22-11-2016'``> daystoMonday = 0 - (today.isoWeekday() - 1)+ 7; OUTPUT 6``> nextMonday = today.subtract('days',daystoMonday)``> nextMonday.format('ddd,DM-Y')输出'Wed,16-11-2016'`不应该`nextMonday`是`today.add('days',daystoMonday)`相反? (2认同)

mez*_*eze 5

这是在lang文件中指定,您可以包含lang/en-au.jslang/en-gb.js文件并设置所需的语言标准.假设你在英国:

moment.lang('en-gb');
Run Code Online (Sandbox Code Playgroud)

如果您不想使用自定义语言,可以将其更改为默认的美国语言环境:

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.
    }
});
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

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
*/
Run Code Online (Sandbox Code Playgroud)

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