javascript - Utilisez moment.js pour générer la structure de données du calendrier pour le mois spécifié
天蓬老师
天蓬老师 2017-05-19 10:24:49
0
3
1292

Veuillez me donner une bonne pratique. Je ne connais pas le moment (je regarde l'API depuis un jour et je comprends les bases, je ne veux pas prendre le mauvais chemin, alors je le ferais). J'aimerais vous donner la structure de données finale. Par exemple, [[26,27,28, 1,2,3,4], [], [], ...]

.

Merci, pouah haha

天蓬老师
天蓬老师

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

répondre à tous(3)
大家讲道理

Il ne semble y avoir aucune méthode pour générer directement un calendrier dans l'API moment.js

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

Idée générale :

  1. Construire un tableau 6*7 joursArr

  2. Obtenez le nombre de jours du mois précédent, le nombre de jours de ce mois et le jour de la semaine correspondant au premier de ce mois (0 signifie lundi)

  3. Calculez ensuite la date correspondant à daysArr[0][0] (le nombre de jours du mois précédent - la semaine correspondant au premier de ce mois)daysArr[0][0]对应的日期(上月天数 - 本月一号对应的星期)

  4. 根据daysArr[0][0]

Calculez les valeurs des autres éléments de dayArr en fonction de daysArr[0][0]🎜🎜 🎜
滿天的星座

Un tableau de dates unidimensionnel peut être considéré comme suit :

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;
}, []);
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal