Heim > Fragen und Antworten > Hauptteil
Bitte nennen Sie mir eine Best Practice. Ich schaue mir die API seit einem Tag an und verstehe die Grundlagen, also würde ich es tun Ich möchte Ihnen die endgültige Datenstruktur geben, zum Beispiel [[26,27,28, 1,2,3,4], [], [], ...]
Danke, ugh haha
大家讲道理2017-05-19 10:26:49
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其他元素的值
滿天的星座2017-05-19 10:26:49
一维date数组可以思路:
const dates = []
for(let i = 0; i < 42; i+=1) {
const startDate = moment('2017-05-20').date(1);
dates[i] = startDate.weekday(i).date();
};
console.log(dates);
ringa_lee2017-05-19 10:26:49
let result = [...Array(42).keys()].reduce((acc, val) => {
acc.push(moment().add(val, 'day').format('YYYY/MM/DD'));
return acc;
}, []);