我正在用AngularJS 1.5编写应用程序。我使用momentJS库作为我的日期/时间。
我做了一个日历。
我通过确定一个月中ISO周数,然后每周填写ISO周中的7天来制作日历。
我想这样做,所以我可以显示上个月和下个月的几个结束日。
它工作得很好,但现在我的任务是用户能够配置一周的开始日期(例如周一,周日或周六)。
我不确定我是否仍然可以将这些ISO周用于我的任务。我希望它是与语言环境/语言无关的。
这是我的JS小提琴: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
});
}
}
你可以简单地使用qazxsw poi和qazxsw poi而不是qazxsw poi和week()
。
startOf('week')
:
获取或设置一年中的一周。
由于不同的区域设置定义了不同年份的周数,因此Moment.js添加了
isoWeek()
来获取/设置一年中的本地化周。一年中的一周取决于哪一天是一周的第一天(星期日,星期一等),以及哪一周是一年中的第一周。
这样,您的日历将取决于区域设置。您可以使用startOf('week')
方法自定义一周的第一天(对于当前区域设置),只需更改周对象的week()
(星期几)键(以及moment#week
键,如果需要)的值。请参阅文档的updateLocale
部分以获取有关区域设置自定义的更多信息。
如果需要,您还可以定义dow
。