「已注销」 2021-09-29 09:25 采纳率: 57.1%
浏览 62
已结题

JS基础题,要求基础做法,计算题

利用流程控制分枝语句或者用for循环做出来一道题。题目:给出月份和日期,算出是当年的第几天。一定要基础做法

  • 写回答

4条回答 默认 最新

  • 崽崽的谷雨 2021-09-29 10: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月的天数 
        }
      }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月30日
  • 已采纳回答 9月30日
  • 修改了问题 9月29日
  • 创建了问题 9月29日

悬赏问题

  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算