javascript – Verwenden Sie moment.js, um die Datenstruktur des Kalenders für den angegebenen Monat zu generieren
天蓬老师
天蓬老师 2017-05-19 10:24:49
0
3
1319

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

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

Antworte allen(3)
大家讲道理

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能识别的格式
  ...

大致想法:

  1. 构建一个6*7的数组daysArr

  2. 获取到上月天数、本月天数以及本月一号对应星期几(0表示周一)

  3. 然后计算出daysArr[0][0]对应的日期(上月天数 - 本月一号对应的星期)

  4. 根据daysArr[0][0]计算出daysArr其他元素的值

滿天的星座

一维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);
左手右手慢动作
let result = [...Array(42).keys()].reduce((acc, val) => {
    acc.push(moment().add(val, 'day').format('YYYY/MM/DD'));
    return acc;
}, []);
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage