Skip to content

Instantly share code, notes, and snippets.

@yuizho
Forked from anonymous/index.html
Created August 28, 2016 05:49
Show Gist options
  • Save yuizho/929c2093a0d137908935906ce0803f9a to your computer and use it in GitHub Desktop.
Save yuizho/929c2093a0d137908935906ce0803f9a to your computer and use it in GitHub Desktop.
JS Bin // source http://jsbin.com/sewugazaja
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/2.3.22/rx.all.js"></script>
<script src="http://code.jquery.com/jquery-2.1.0.min.js"></script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<script id="jsbin-javascript">
// { firstDay: 1,
// lastDate: 31,
// lastDay: 3,
// month: 8 }
function getMonthData(date) {
var month = date.getMonth() + 1;
// 初日にセット
date.setDate(1);
var firstDay = date.getUTCDay()
// 最終日にセット
date.setMonth(date.getMonth() + 1);
date.setDate(0);
var lastDate = date.getDate();
var lastDay = date.getUTCDay();
var ret = {};
ret.month = month;
ret.firstDay = firstDay;
ret.lastDate = lastDate;
ret.lastDay = lastDay;
return ret;
}
// [['--', 6, ..]},
// [1, 7, ..]},
// ..]
function createMonthArray(date) {
var monthDate = getMonthData(date);
// 雛形となる配列。それぞれの曜日ごとに日付の配列を持つ。
var monthArray = [[], [], [], [], [], [], []]
// 最初の日をセット
var firstDay = monthDate.firstDay;
monthArray[firstDay -1].push('1');
// 最初の日より前は'--'を設定
for (var i = firstDay -2; i >= 0; i--) {
monthArray[i].push('--');
}
// 最終日まで日付を設定
var targetDay = firstDay;
for (var i = 2; i <= monthDate.lastDate; i++) {
monthArray[targetDay % 7].push(i + '');
targetDay++;
}
// 最終日より後は'--'を設定
if (monthDate.lastDay === 0) {
return monthArray;
}
for (var i = monthDate.lastDay; i < 7; i++) {
monthArray[i].push('--');
}
return monthArray;
}
function zip(array) {
return array[0].map(function (e, i) {
var ret = [];
for (var j = 0; j < array.length; j++) {
ret.push([array[j][i]])
}
return ret;
});
}
var now = new Date();
now.setMonth(now.getMonth() + 2);
var monthData = getMonthData(now);
console.log(monthData);
var monthArray = createMonthArray(now);
var zippedMonthArray = zip(monthArray);
console.log(zippedMonthArray);
</script>
<script id="jsbin-source-html" type="text/html"><!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/2.3.22/rx.all.js"><\/script>
<script src="//code.jquery.com/jquery-2.1.0.min.js"><\/script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
</body>
</html></script>
<script id="jsbin-source-javascript" type="text/javascript">// { firstDay: 1,
// lastDate: 31,
// lastDay: 3,
// month: 8 }
function getMonthData(date) {
var month = date.getMonth() + 1;
// 初日にセット
date.setDate(1);
var firstDay = date.getUTCDay()
// 最終日にセット
date.setMonth(date.getMonth() + 1);
date.setDate(0);
var lastDate = date.getDate();
var lastDay = date.getUTCDay();
var ret = {};
ret.month = month;
ret.firstDay = firstDay;
ret.lastDate = lastDate;
ret.lastDay = lastDay;
return ret;
}
// [['--', 6, ..]},
// [1, 7, ..]},
// ..]
function createMonthArray(date) {
var monthDate = getMonthData(date);
// 雛形となる配列。それぞれの曜日ごとに日付の配列を持つ。
var monthArray = [[], [], [], [], [], [], []]
// 最初の日をセット
var firstDay = monthDate.firstDay;
monthArray[firstDay -1].push('1');
// 最初の日より前は'--'を設定
for (var i = firstDay -2; i >= 0; i--) {
monthArray[i].push('--');
}
// 最終日まで日付を設定
var targetDay = firstDay;
for (var i = 2; i <= monthDate.lastDate; i++) {
monthArray[targetDay % 7].push(i + '');
targetDay++;
}
// 最終日より後は'--'を設定
if (monthDate.lastDay === 0) {
return monthArray;
}
for (var i = monthDate.lastDay; i < 7; i++) {
monthArray[i].push('--');
}
return monthArray;
}
function zip(array) {
return array[0].map(function (e, i) {
var ret = [];
for (var j = 0; j < array.length; j++) {
ret.push([array[j][i]])
}
return ret;
});
}
var now = new Date();
now.setMonth(now.getMonth() + 2);
var monthData = getMonthData(now);
console.log(monthData);
var monthArray = createMonthArray(now);
var zippedMonthArray = zip(monthArray);
console.log(zippedMonthArray);
</script></body>
</html>
// { firstDay: 1,
// lastDate: 31,
// lastDay: 3,
// month: 8 }
function getMonthData(date) {
var month = date.getMonth() + 1;
// 初日にセット
date.setDate(1);
var firstDay = date.getUTCDay()
// 最終日にセット
date.setMonth(date.getMonth() + 1);
date.setDate(0);
var lastDate = date.getDate();
var lastDay = date.getUTCDay();
var ret = {};
ret.month = month;
ret.firstDay = firstDay;
ret.lastDate = lastDate;
ret.lastDay = lastDay;
return ret;
}
// [['--', 6, ..]},
// [1, 7, ..]},
// ..]
function createMonthArray(date) {
var monthDate = getMonthData(date);
// 雛形となる配列。それぞれの曜日ごとに日付の配列を持つ。
var monthArray = [[], [], [], [], [], [], []]
// 最初の日をセット
var firstDay = monthDate.firstDay;
monthArray[firstDay -1].push('1');
// 最初の日より前は'--'を設定
for (var i = firstDay -2; i >= 0; i--) {
monthArray[i].push('--');
}
// 最終日まで日付を設定
var targetDay = firstDay;
for (var i = 2; i <= monthDate.lastDate; i++) {
monthArray[targetDay % 7].push(i + '');
targetDay++;
}
// 最終日より後は'--'を設定
if (monthDate.lastDay === 0) {
return monthArray;
}
for (var i = monthDate.lastDay; i < 7; i++) {
monthArray[i].push('--');
}
return monthArray;
}
function zip(array) {
return array[0].map(function (e, i) {
var ret = [];
for (var j = 0; j < array.length; j++) {
ret.push([array[j][i]])
}
return ret;
});
}
var now = new Date();
now.setMonth(now.getMonth() + 2);
var monthData = getMonthData(now);
console.log(monthData);
var monthArray = createMonthArray(now);
var zippedMonthArray = zip(monthArray);
console.log(zippedMonthArray);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment