js 实现 输入 年月日 算出 是当年的第几天?

题目:

 输入年月日 ,求出 是当年的第几天?

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;
    } //...后面的一次类推
  }

猜你喜欢

转载自blog.csdn.net/weixin_44058725/article/details/120570905