javascript - 用moment.js生成指定月份的日历的数据结构
本文介绍了javascript - 用moment.js生成指定月份的日历的数据结构的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
求给个最佳实践, 对moment不熟(api看了一天了,基础的都了解了), 不想走冤枉路, 求给出最终 数据结构 就行, 比如[[26,27,28,1,2,3,4], [], [], ...]
感谢, 呜哈哈
解决方案
moment.js API里面好像没有看到直接生成日历的方法
monthDay(date) {
const daysArr = [[], [], [], [], [], []]; // 6*7的日历数组
const currentWeekday = moment(date).date(1).weekday(); // 获取当月1日为星期几
const lastMonthDays = moment(date).subtract(1, 'month').daysInMonth(); // 获取上月天数
const currentMonthDays = moment(date).daysInMonth(); // 获取当月天数
const getDay = day => (day <= lastMonthDays ? day : (day <= (lastMonthDays + currentMonthDays)) ? day - lastMonthDays : day - (lastMonthDays + currentMonthDays)); // 日期处理
for (let i = 0; i < 7; i += 1) {
let virtualDay = (lastMonthDays - currentWeekday) + i;
for (let j = 0; j < 6; j += 1) {
daysArr[j][i] = getDay(virtualDay + (j * 7));
}
}
console.table(daysArr);
}
...
monthDay(date); //date格式为moment能识别的格式
...
大致想法:
构建一个6*7的数组daysArr
获取到上月天数、本月天数以及本月一号对应星期几(0表示周一)
然后计算出
daysArr[0][0]
对应的日期(上月天数 - 本月一号对应的星期)根据
daysArr[0][0]
计算出daysArr其他元素的值
这篇关于javascript - 用moment.js生成指定月份的日历的数据结构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文