簡體   English   中英

下周使用jquery和moment js開始和結束

[英]get next week start and end using jquery and moment js

我搜索了這個問題,發現Stackoverflow上沒有答案..所以我決定回答它......

如果您需要將星期一作為周開始的下一個/上周的開始/結束,這個問題會有所幫助。

派對有點晚了,但這是我發現表達周的開始/結束的最簡單的方法。 根據ISO 8601isoWeek參數在周一開始幾周,而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')

我喜歡這些結構,因為它們非常易讀。 通過指定subtractadd的周數,可以輕松地返回或轉發任意數周。

我用了這個時刻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; 
        }

這在lang文件中指定,您可以包含lang/en-au.jslang/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's 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/

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM