平年:
2月-->28天
4,6,9,11月-->30天
1,3,5,7,8,10,12月-->31天
闰年:
2月-->29天
4,6,9,11月-->30天
1,3,5,7,8,10,12月-->31天
闰年的计算方式:
1、年份/100
2、如果 年份/100有余数 , 年份/4 没有余数 是闰年
如果 年份/100没余数 , 年份/400 没有余数 是闰年
function year(years){ return years%100 == 0 ? (years%400 == 0 ? 1 : 0) : (years%4 == 0 ? 1 : 0);//判断闰年;如果是闰年返回1,平年返回0 } function day(mouths, fn){//fn --> year()函数 if(fn == 1 && mouths == 2){ return 29; }else{ if(mouths == 2){ return 28; }else if(mouths == 4 || 6 || 7 || 9 || 11){//4 6 7 9 11 -> 30 return 30; }else{ return 31; } } }
下面是全部代码:
html:
<div id="datebox"></div><!--选完日期后填入的地方--> <div style="display: flex;"> <div class="years"> </div> <div class="mouth" style="display: none"> </div> <div class="day" style="display: none"> </div> </div>
css:
<style> .years,.mouth,.day{ width: 90px; height: 200px; overflow-y: scroll; } </style>
javascript:
var startYear = 1918; var years = document.getElementsByClassName('years')[0]; var mouth = document.getElementsByClassName('mouth')[0]; var days = document.getElementsByClassName('day')[0]; for(var k = startYear; k <= 2017; k++){ var node = createNode(k); years.appendChild(node); } for(var m = 1; m <= 12; m++){ var node = createNode(m); mouth.appendChild(node); } function createDay(option){ for(var i = 1; i <= option; i++){ var node = createNode(i); days.appendChild(node); } } function createNode (num){ var node = document.createElement('a'); node.innerHTML = num; node.style.display = 'block'; return node; } function year(years){ return years%100 == 0 ? (years%400 == 0 ? 1 : 0) : (years%4 == 0 ? 1 : 0); } function day(mouths, fn){ if(fn == 1 && mouths == 2){ return 29; }else{ if(mouths == 2){ return 28; }else if(mouths == 4 || 6 || 7 || 9 || 11){//4 6 7 9 11 -> 30 return 30; }else{ return 31; } } } years.addEventListener('click', function(e){ var temps = []; temps.push(e.target.innerHTML); mouth.style.display = 'block'; mouth.addEventListener('click', function(e){ temps.push(e.target.innerHTML); days.style.display = 'block'; createDay(day(temps[1], year(temps[2]))); days.addEventListener('click', function(e){ temps.push(e.target.innerHTML); var dates = temps[0] + '年' + temps[1] + '月' + temps[2] + '日'; datebox.innerHTML = dates; this.style.display = 'none'; mouth.style.display = 'none'; years.style.display = 'none'; }) }) })