if you have ever thought how to accomplish a simple calendar. you'll konw what I'm talking about
核心问题
每个月有多少天?
- 1月,3月,5月,7月,8月,10月,12月,都是31天 - 2月平年是28天,闰年是29天 - 其他月份:4月,6月,9月,11月每个月的第一天是星期几?
function firstDay(date) { return new Date(date + '-01').getDay() } 核心函数判断闰年还是平年
function is_leap(year) { return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0 ? true : false }
获取某一年各月的天数
function m_days(year) { return [31,28+is_leap(year),31,30,31,30,31,31,30,31,30,31] }
获取某年某月的第一天是星期几
function firstDay(date) { return new Date(date + '-01').getDay() }
获取每个月的天数数组
function generateDays(date) { var year = date.split('-')[0] var month = date.split('-')[1] - 1 var arr = [] //根据某年某月的第一天是星期几来填充空值 for(let j = 0; j < firstDay(date); j++) { arr.push({value: '', num: ''}) } for(let i = 0; i < m_days(year)[month]; i++) { let value = year + '-' + addZero(month+1) + '-' + addZero(i+1) arr.push({ num: addZero(i+1), value: value, }) } return arr }
项目地址:https://github.com/wardenger/wx-calendar
项目下载:wx-calendar-master (1).zip