javascript - 用moment.js生成指定月份的日历的数据结构
天蓬老师
天蓬老师 2017-05-19 10:24:49
0
3
1235

求给个最佳实践, 对moment不熟(api看了一天了,基础的都了解了), 不想走冤枉路, 求给出最终数据结构就行, 比如[[26,27,28,1,2,3,4], [], [], ...]

感谢, 呜哈哈

天蓬老师
天蓬老师

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

全部回复 (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);
      左手右手慢动作

      雷雷

        最新下载
        更多>
        网站特效
        网站源码
        网站素材
        前端模板
        关于我们 免责声明 Sitemap
        PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!