最近项目中需要手写年月日联动,对润年还是平年的概念很模糊,特此记录下~
判断润年其实只要满足下面几个条件即可(闰年 2月为29天)
- 1.普通年能被4整除且不能被100整除的为闰年。如2004年就是闰年,1900年不是闰年
- 2.世纪年能被400整除的是闰年。如2000年是闰年,1900年不是闰年
//每月多少天
getDaysOfEveryMonth(year, month) {//返回天数
var baseMonthsDay = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];//各月天数
var thisYear = year;//年
var thisMonth = month;//月
var thisMonthDays = [];//天数
//判断是否为闰年 闰年2月29天
function isRunYear(fullYear) {
return (fullYear % 4 === 0 && (fullYear % 100 !== 0 || fullYear % 400 === 0));
}
function getThisMonthDays(days) {//传天数,返天数数组
var arr = [];
for (var i = 1; i <= days; i++) {
arr.push(i);
}
return arr;
}
if (isRunYear(thisYear) && thisMonth == 1) {//闰年2月29天
thisMonthDays = getThisMonthDays(baseMonthsDay[thisMonth] + 1);
} else {
thisMonthDays = getThisMonthDays(baseMonthsDay[thisMonth]);
}
return thisMonthDays;
}
下边这个是年份的输出
var yearStart = new Date(1969, 1, 1);
var yearEnd = new Date(1994, 1, 1);
var year = [];//年数组
var month = [];//月数组
var day = [];//日数组
for (var i = yearStart.getFullYear(); i <= yearEnd.getFullYear(); i++) {
year.push(i);
}