Skip to content

Instantly share code, notes, and snippets.

@aoirint
Last active June 17, 2017 01:37
Show Gist options
  • Save aoirint/fb8a086c58166d410cda1bb0db0baa07 to your computer and use it in GitHub Desktop.
Save aoirint/fb8a086c58166d410cda1bb0db0baa07 to your computer and use it in GitHub Desktop.
実行月の日曜始まり5週カレンダーをテーブル出力するJS
<!DOCTYPE html>
<script>
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);
}
console.log(preDates);
console.log(dates);
console.log(postDates);
window.onload = function() {
var table = document.createElement('table');
var weektr = document.createElement('tr');
var c = 0;
for (var i=0,len=preDates.length; i<len; i++) {
if (c != 0 && c % 7 == 0) {
table.appendChild(weektr);
weektr = document.createElement('tr');
}
var datetd = document.createElement('td');
datetd.innerText = preDates[i].date;
weektr.appendChild(datetd);
c++;
}
for (var i=0,len=dates.length; i<len; i++) {
if (c != 0 && c % 7 == 0) {
table.appendChild(weektr);
weektr = document.createElement('tr');
}
var datetd = document.createElement('td');
datetd.innerText = dates[i].date;
weektr.appendChild(datetd);
c++;
}
for (var i=0,len=postDates.length; i<len; i++) {
if (c != 0 && c % 7 == 0) {
table.appendChild(weektr);
weektr = document.createElement('tr');
}
var datetd = document.createElement('td');
datetd.innerText = postDates[i].date;
weektr.appendChild(datetd);
c++;
}
table.appendChild(weektr);
document.body.appendChild(table);
};
</script>
@aoirint
Copy link
Author

aoirint commented Jun 17, 2017

2017/06に実行すると、以下のようなtableが得られる

28 29 30 31 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 1

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