利用流程控制分枝语句或者用for循环做出来一道题。题目:给出月份和日期,算出是当年的第几天。一定要基础做法
你参考 一下 。其实从算出 平年和闰年 的时候就 可以 用 if判断 用 if else或者switch都行 。这样会好理解且麻烦 需要 12个分支语句 。
我是直接 乘出来的 你可以
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;
}
}
这个是简化版本 你把后面的月份补全就行
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月的天数
}
}
你这题目什么意思每太懂
大小月区别开,特殊月份区别开(根据输入年份判断平闰年)
const date = [2021, 9, 29]//年 月 日
function count(date) {
const year = date[0], month = date[1], day = date[2]
let result = 0
new Array(month).fill('').map((cur, index) => {
index + 1 === 2 ?
//2月判断润年
(year % 4 === 0 ? result += 29 : result += 28)
://非2月小等于7月的奇数31偶数30
index + 1 <= 7 ? ((index + 1) % 2 === 0 ? result += 30 : result += 31)
://反之
((index + 1) % 2 === 0 ? result += 31 : result += 30)
})
console.log('今年的第几天:' + result)
}
count(date)