利用流程控制分枝语句或者用for循环做出来一道题。题目:给出月份和日期,算出是当年的第几天。一定要基础做法
4条回答 默认 最新
- 崽崽的谷雨 2021-09-29 02:45关注
你参考 一下 。其实从算出 平年和闰年 的时候就 可以 用 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月的天数 } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报