题目:
输入年月日 ,求出 是当年的第几天?
1.获取年份
2.判断 年份 是否是 平年和闰年
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { //闰年
isyear = 29;
} else {
isyear = 28; //平年
}
3.根据月份 ,区分大小月计算天数
拿到 月 和 天
计算月前面的 +天 就是 在年中的天数
这个 是用数组长度计算 不用写那么多判断了
let day = countYearDay(12, 31);
console.log(day)
function countYearDay(month, date) {
let big = [1, 3, 5, 7, 8, 10, 12];
let small = [4, 6, 9, 10];
//获取年份 判断 平闰 年
var day = new Date();
var year = day.getFullYear(); //获取完整的年份(4位)
// var year = 2000; //获取完整的年份(4位)
var isyear = 0;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { //闰年
isyear = 29;
} else {
isyear = 28; //平年
}
//合法值校验
if (month > 12 || month == 0) {
console.log("你输入的月份不合法")
}
if (month == 2 && (date != 28 && date != 29)) {
console.log("你输入的日期不合法")
return
} else if (date > 31 || date == 0) {
console.log("你输入的日期不合法")
return
}
let b = [];
let s = [];
//根据 月份 确认 大小月 并计算 第几天
console.log(b, s)
big.map((item, index) => {
if (item < month) {
b.push(item);
}
})
small.map((item, index) => {
if (item < month) {
s.push(item);
}
})
console.log(b, s)
if (month == 2) { //2月特殊处理
return 31 + date;
}
if (b.length == 0 && s.length == 0) { //一月的话 就直接输出
return date;
} else {
console.log(b.length * 31, s.length * 30, isyear, date)
return (b.length * 31) + (s.length * 30) + isyear + date;
}
}
这个 好理解 就是12个if.
function countYearDay(month, date) {
let big = [1, 3, 5, 7, 8, 10, 12];
let small = [4, 6, 9, 10];
//获取年份 判断 平闰 年
var day = new Date();
var year = day.getFullYear(); //获取完整的年份(4位)
// var year = 2000; //获取完整的年份(4位)
var isyear = 0;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { //闰年
isyear = 29;
} else {
isyear = 28; //平年
}
//合法值校验
if (month > 12 || month == 0) {
console.log("你输入的月份不合法")
}
if (month == 2 && (date != 28 && date != 29)) {
console.log("你输入的日期不合法")
return
} else if (date > 31 || date == 0) {
console.log("你输入的日期不合法")
return
} date
if (month == 1) {
return date
} else if (month == 2) {
return 31 + date; //也就是 1月31 + 当天
} else if (month == 3) {
return 31 + isyear + date; //也就是 1月 31 天+ 2月 +3月的天数
}else if(month==4){
return 31+isyear+31+date;
}else if(month==5){
return 31+isyear+31+30+date;
} //...后面的一次类推
}