Rumah  >  Soal Jawab  >  teks badan

javascript - Gunakan moment.js untuk menjana struktur data kalendar untuk bulan yang ditentukan

Tolong berikan saya amalan terbaik yang saya tidak biasa dengan momen (saya telah melihat API selama sehari, dan saya faham asasnya, jadi saya akan melakukannya). ingin memberi anda struktur data muktamad Contohnya, [[26,27,28, 1,2,3,4], [], [], ...]

.

Terima kasih, ugh haha

天蓬老师天蓬老师2712 hari yang lalu1258

membalas semua(3)saya akan balas

  • 大家讲道理

    大家讲道理2017-05-19 10:26:49

    Nampaknya tiada kaedah untuk menjana kalendar secara langsung pada masa ini.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能识别的格式
      ...

    Idea umum:

    1. Bina susunan 6*7 hariArr

    2. Dapatkan bilangan hari pada bulan sebelumnya, bilangan hari dalam bulan ini, dan hari dalam minggu bersamaan dengan pertama bulan ini (0 bermaksud Isnin)

      #🎜 🎜#
    3. Kemudian hitung tarikh yang sepadan dengan daysArr[0][0] (bilangan hari dalam bulan sebelumnya - minggu bersamaan dengan yang pertama bulan ini) #🎜 🎜#

      daysArr[0][0]对应的日期(上月天数 - 本月一号对应的星期)

    4. 根据daysArr[0][0]

      Kira nilai elemen lain hariArr berdasarkan daysArr[0][0]
    #🎜🎜#

    balas
    0
  • 滿天的星座

    滿天的星座2017-05-19 10:26:49

    Tatasusunan tarikh satu dimensi boleh difikirkan seperti berikut:

    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);

    balas
    0
  • ringa_lee

    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;
    }, []);
    

    balas
    0
  • Batalbalas