カレンダー
const today = new Date();
const year = today.getFullYear();
const month = today.getMonth();
function getCalenderHead() {
const dates = [];
const lastdate = new Date(year, month, 0).getDate(); // 前月末日
const week = new Date(year, month, 1).getDay(); // 今月初日の曜日
for (let i = 0; i < week; i++) {
dates.unshift({
date: lastdate - i,
isToday: false,
isDisabled: true,
});
}
return dates;
}
function getCalenderBody() {
const dates = [];
const lastday = new Date(year, month + 1, 0).getDate(); // 今月末日
for (let i = 1; i < lastday + 1; i++) {
dates.push({ date: i, isToday: false, isDisabled: false });
}
dates[today.getDate() - 1].isToday = true; // 当日フラグをtrueに
return dates;
}
function getCalenderFoot() {
const dates = [];
const lastday = new Date(year, month + 1, 0).getDay(); // 今月末日の曜日
for (let i = 1; i < 7 - lastday; i++) {
dates.push({ date: i, isToday: false, isDisabled: false });
}
return dates;
}
function createCalender() {
const dates = [
...this.getCalenderHead(),
...this.getCalenderBody(),
...this.getCalenderFoot(),
];
const week = [];
const weekCount = dates.length / 7;
for (let i = 0; i < weekCount; i++) {
week.push(dates.splice(0, 7));
}
return week;
}
const dates = createCalender();
console.log(dates);