javascript - 使用moment的isoWeekday创建日期网格

标签 javascript date calendar momentjs

我正在尝试为日历创建日期网格。当星期日被指定为“一周的第一天”时,我可以让它工作。

使用星期日作为一周的开始日(工作)

鉴于 2017 年 3 月,网格将从2017 年 2 月 26 日星期日开始,到2017 年 4 月 1 日星期六结束。我就是这样做的:

let now = moment('2017/03/06/', 'YYYY/MM/DD');
let startOfGrid = now.clone().startOf('month').startOf('week');
let endOfGrid = now.clone().endOf('month').endOf('week');

console.log(startOfGrid.format()); // Sunday, Febrary 26, 2017
console.log(endOfGrid.format()); // Saturday, April 1, 2017
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

然后,我将这两个日期传递出去以填充其间的日期,这为我提供了日历网格的所有日期。

<小时/>

使用星期六或星期一作为一周的开始日(不起作用)

我需要能够支持从周六或周一开始的一周,但我似乎无法正确设置,并且结果在几个月内不一致。让我们以星期六为例:

再次给出三月,但将一周的开始设置为星期六,并使用startOf('isoWeek'),我最终得到星期一一周的开始(应该是星期六):

let now = moment('2017/03/06/', 'YYYY/MM/DD');
let startOfGrid = now.clone().startOf('month').isoWeekday('saturday').startOf('isoWeek');
let endOfGrid = now.clone().endOf('month').isoWeekday('saturday').endOf('isoWeek');

console.log(startOfGrid.format()); // Monday, Febrary 27, 2017
console.log(endOfGrid.format()); // Sunday, April 2, 2017
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

我应该将周六作为网格的开始,周五作为网格的结束。

我怎样才能让它发挥作用?

最佳答案

根据 https://momentjs.com/docs/#/customization/ 中整理的一些片段和 https://momentjs.com/docs/#/i18n/changing-locale/ ,您可以使用 moment.updateLocale 全局覆盖区域设置配置,如下所示:

moment.updateLocale('en', {
    week: {
        dow: 6  //week starts on saturday
    }
});

这将影响将来创建的所有时刻对象,但不会影响已经创建的对象。或者,如果您想要更多灵 active ,您可以定义自己的区域设置:

moment.defineLocale('en-mod', {
    parentLocale: 'en',
    week: {
        dow: 6  //week starts on saturday
    }
});

请注意,这也会全局设置区域设置,因此您可能需要立即调用 moment.locale('en'); 以更改回默认值(或您最初设置的任何区域设置) .

然后,通过您的自定义区域设置定义,您可以在各个 moment 对象上使用它,即: moment().locale('en-mod');

关于javascript - 使用moment的isoWeekday创建日期网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42631432/

相关文章:

java - 日期/时间的模式匹配?

Mysql结果每小时数据

javascript - 向 JavaScript 日历添加功能?

jquery - 在 C# .NET 3.5 中使用 HTTPHandler 和 jQuery 周日历

javascript - CSS "!important"规则禁用 animate()

javascript - D3更新画笔的比例不更新画笔

javascript - 使用 Mongoose 将数组( 'tags')保存到 MongoDB

javascript - 水平溢出/Text Inside Span 嵌套在 Div 中

php如何比较一天与近结束时间的比

javascript - 在javascript中增加日历日期