javascript - Gunakan moment.js untuk menjana struktur data kalendar untuk bulan yang ditentukan
天蓬老师
天蓬老师 2017-05-19 10:24:49
0
3
1331

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

天蓬老师
天蓬老师

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

membalas semua(3)
大家讲道理

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]
#🎜🎜#
滿天的星座

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);
左手右手慢动作
let result = [...Array(42).keys()].reduce((acc, val) => {
    acc.push(moment().add(val, 'day').format('YYYY/MM/DD'));
    return acc;
}, []);
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan