Skip to content

Instantly share code, notes, and snippets.

@aoirint
Last active June 17, 2017 01:56
Show Gist options
  • Save aoirint/0ea50201a01ecb3c2d429336f068b1db to your computer and use it in GitHub Desktop.
Save aoirint/0ea50201a01ecb3c2d429336f068b1db to your computer and use it in GitHub Desktop.
Ver.2 実行月の日曜始まり5週カレンダーを出力するJS / 週単位で配列に入れるようにした
function ADate(year, month, date) {
this.year = year;
this.month = month;
this.date = date;
}
var today = new Date();
var year = today.getFullYear();
var month = today.getMonth() +1;
var lastMonth = new Date(year, month-1, 0);
var thisMonth = new Date(year, month, 0);
var thisMonthFirst = new Date(year, month-1, 1);
var nextMonthFirst = new Date(year, month, 1);
var preDates = [];
var dates = [];
var postDates = [];
for (var i=0,len=thisMonthFirst.getDay(); i<len; i++) {
preDates[i] = new ADate(lastMonth.getFullYear(), lastMonth.getMonth() +1, lastMonth.getDate() -len +1 +i);
}
for (var i=0,len=thisMonth.getDate(); i<len; i++) {
dates[i] = new ADate(thisMonth.getFullYear(), thisMonth.getMonth() +1, i+1);
}
for (var i=0,len=6-nextMonthFirst.getDay()+1; i<len; i++) {
postDates[i] = new ADate(nextMonthFirst.getFullYear(), nextMonthFirst.getMonth() +1, i+1);
}
var weeks = {};
var prlen = preDates.length;
var thlen = dates.length;
var pslen = postDates.length;
weeks['dateCount'] = prlen + thlen + pslen;
weeks['weekCount'] = weeks['dateCount'] / 7;
for (var i=0; i<weeks['weekCount']; i++) {
var ds = [];
for (var j=0; j<7; j++) {
var d = i*7 + j;
var date = d < prlen ? preDates[d] : (d -prlen < thlen ? dates[d -prlen] : postDates[d -prlen -thlen]);
ds[j] = date;
}
weeks[i] = ds;
}
console.log(weeks);
window.onload = function() {
var table = document.createElement('table');
for (var i=0; i<weeks['weekCount']; i++) {
var weektr = document.createElement('tr');
for (var j=0; j<7; j++) {
var date = weeks[i][j];
var datetd = document.createElement('td');
var mn = date.month;
if (mn < 10) mn = '0' + mn;
var dt = date.date;
if (dt < 10) dt = '0' + dt;
datetd.dataset.date = date.year + '-' + mn + '-' + dt;
datetd.innerText = date.date;
weektr.appendChild(datetd);
}
table.appendChild(weektr);
}
document.body.appendChild(table);
};
@aoirint
Copy link
Author

aoirint commented Jun 17, 2017

表示は同様。
出力にデータセットで日付を入れるように
<td data-date="2017-06-23">23</td>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment