我正在用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
});
}
}发布于 2018-02-16 10:06:32
您可以简单地使用week()、ans、startOf('week')而不是isoWeek()和startOf('week')。
week()
获取或设置一年中的一周。 由于不同的地区对年份周的定义不同,Moment.js添加了
moment#week来获取/设置一年中的本地化周。 一年中的哪一周取决于哪一天是一周的第一天(星期日、星期一等),哪一周是一年中的第一周。
这样,您的日历将取决于地区。您可以使用updateLocale方法自定义一周的第一天(针对当前的地区),只需更改week对象的dow (day of week)键(如果需要的话也要更改doy键)的值即可。请参阅文档的自定义部分,以获取有关地区定制的更多信息。
如果需要,还可以定义一个伪区域。
https://stackoverflow.com/questions/48824010
复制相似问题