开发日历开始首先要确定当前月份在日历中需要几行显示(一般5行, 少数月份需要六行):
获取当前月份的第一天是周几,用本周剩余天数 + 4 * 7 得到5行显示天数, 和本月天数对比, 是否可以完整显示。
然后空余地方用下个月和上个月补
// 传入年月日, type:当前日历以周一开头还是周日开头
getMonthDaysArray(year, month, day, type)
依次得到如下数据:
// 当前月天数
this.days = this.getMonthDays(year, month);
// 获取每一天的展示状态
this.getMonthsStatus();
// 上月天数
this.preDays = this.getMonthDays(year, month - 1);
// 下月天数
this.nextDays = this.getMonthDays(year, month + 1);
// 当前月第一天周几
this.MonthFirstDayInWeek = this.getWeekday(year, month, 1);
// 初始化当前日历的行数 可能是六行也可能是五行
this.resetMonthDays();
// 下个月第一天周几
this.MonthNextDayInWeek = this.getWeekday(year, month + 1, 1);
上月在当月日历面板中的排列
if (this.MonthFirstDayInWeek != 7) {
for (let i = 0; i < this.MonthFirstDayInWeek; i++) {
dayArrays.push({
dayNum: this.preDays - this.MonthFirstDayInWeek + i + 1,
weekDay: this.WEEKTABLE[type].cn[i],
isThisMonth: false
});
}
}
//当月日历面板中的排列
for (let i = 1; i <= this.days; i