【发布时间】:2018-04-17 08:04:29
【问题描述】:
【问题讨论】:
标签: typescript matrix calendar momentjs
【问题讨论】:
标签: typescript matrix calendar momentjs
此方法获取年份和月份,并返回 [weeks][days] 的矩阵来构建日历视图。
private getMonthCalendar(year: number, month: number) : Moment[][]
{
const startDate: Moment = moment({ year: this.model.actualYear, month: this.model.actualMonth }).startOf('month'); //first day of month
const endDay: Moment = moment(startDate).add(1, 'month').add(-1, 'day'); // last day of month
// From first to last day of month, get index of all weeks to display
const weeks: Dictionary<string, { week, year }> = new Dictionary();
for (let day: Moment = moment(startDate); endDay.diff(day) >= 0; day.add(1, 'day'))
{
let key = day.isoWeekYear() + "_" + day.isoWeek();
if (!weeks.containsKey(key))
{
weeks.setValue(key, { week: day.isoWeek(), year: day.isoWeekYear() });
}
}
// lets build the calendar
var calendar = [];
weeks.forEach((index, week) =>
{
// Get seven days for every week
var weekDays = [];
for (var d = 1; d <= 7; d++)
{
weekDays.push(moment().isoWeekYear(week.year).isoWeek(week.week).day(d));
}
calendar.push(weekDays);
});
return calendar;
}
【讨论】: