gpt4 book ai didi

javascript - 如何修改 momentjs 日历以让几周从用户指定的一天开始?

转载 作者:行者123 更新时间:2023-12-03 02:28:56 24 4
gpt4 key购买 nike

我正在使用 AngularJS 1.5 编写一个应用程序。我正在使用 momentJS 库来记录我的日期/时间。

我做了一个日历。

我通过确定一个月中的 ISO 周数,然后每周填写 ISO 周中的 7 天来制作日历。

我想这样做,这样我就可以显示上个月和下个月的几天。

它工作得很好,但现在我的任务是让用户能够配置一周的开始日期(例如周一、周日或周六)。

我不确定我是否仍然可以使用这些 ISO 周来完成我的任务。我希望它独立于区域设置/语言。

这是我的 JS fiddle : https://jsfiddle.net/aubz88/ge5q9z5t/9/#&togetherjs=HzJkCK0BPy

这是一个代码片段:

var data = {};
data.weeks = {};
data.currentCalendarMonth = moment().startOf('month');

buildMonth();

function buildMonth() {

data.weeks = {};
var startOfMonthISOWeek = data.currentCalendarMonth.clone().startOf('month').isoWeek();
var endOfMonthISOWeek = data.currentCalendarMonth.clone().endOf('month').isoWeek();

for (var i = startOfMonthISOWeek; i < endOfMonthISOWeek + 1; i++) {
data.weeks[i] = [];
buildWeek(i);
}
}

function buildWeek(isoWeekNumber) {

var start = moment().year(data.currentCalendarMonth.get('year')).week(isoWeekNumber).startOf('isoweek');
var firstDayOfTheWeek = start.clone();

for (var i = 0; i < 7; i++) {

var day = firstDayOfTheWeek.clone().startOf('day').add(i, 'days');

data.weeks[isoWeekNumber].push({
date: day.get('date'),
month: day.get('month'),
year: day.get('year'),
day: day
});
}
}

最佳答案

您可以简单地使用 week() ans startOf('week') 而不是 isoWeek()startOf('week')

week() :

Gets or sets the week of the year.

Because different locales define week of year numbering differently, Moment.js added moment#week to get/set the localized week of the year.

The week of the year varies depending on which day is the first day of the week (Sunday, Monday, etc), and which week is the first week of the year.

这样您的日历将取决于区域设置。您可以使用 updateLocale 方法自定义一周的第一天(针对当前区域设置),只需更改 dow (星期几)键的值(和 如果需要的话,也可以使用星期对象的 doy 键。请参阅Customize文档部分以获取有关区域设置自定义的更多信息。

如果需要,还可以定义pseudo locale .

关于javascript - 如何修改 momentjs 日历以让几周从用户指定的一天开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48824010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com