setDate (time) { // 当前指定日期
let dat = time ? new Date(time) : new Date()
const timeY = dat.getFullYear().toString()
const timeM = dat.getMonth().toString()
let mth = Number(timeM) // 数字化
let first = new Date(timeY, mth, 1) // 当月开始日期
const dayStart = moment(first).get('weekday') // 当月开始星期
let last = new Date(timeY, mth + 1, 0) // 当月结束时间
const dayLast = moment(last).get('weekday') // 当月结束星期
let firstDate = moment(first).valueOf() // 需要显示的第一天
let lastDate = moment(last).valueOf() // 需要显示的最后一天
if (dayStart !== 6) { // 第一天不是周六(根据显示要求更改,这个例子是以周六开头)
firstDate = moment(first).subtract(dayStart + 1, 'days').valueOf()
}
if (dayLast !== 5) { // 最后一天不是周五(根据显示要求更改,这个例子是以周五结尾)
if (dayLast === 6) {
lastDate = moment(last).add(6, 'days').valueOf()
} else {
lastDate = moment(last).add(5 - dayLast, 'days').valueOf()
}
}
const dates = []
const data = []
for (let i = firstDate; i <= lastDate; i += 24 * 3600 * 1000) {
dates.push(i)
}
for (let i = 0; i < dates.length; i += 7) {
data.push(dates.slice(i, i + 7))
}
this.tableData = _.map(data, item => {
const row = {}
_.forEach(item, i => {
const date = moment(i)
const day = date.get('weekday')
row[day] = {
text: date.format('MM月DD日'),
isCurrentMonth: i >= moment(first).valueOf() && i <= moment(last).valueOf(),
time: date.format('YYYY-MM-DD')
}
})
return row
})
}
js手写日历表
最新推荐文章于 2023-10-09 00:25:32 发布