JavaScript函数——输入某年某月某日,判断这一天是一年中的第几天

写一个函数,输入某年某月某日,判断这一天是一年中的第几天

        //输入年月日,获取这个日期是这一年的第几天
        //  以3月5日为例,应该先把前两个月的加起来, 然后再加上5天即本月的第几天,特殊情况, 闰年且输入月份大于3时需考虑多加一天
        var years=Number(prompt('请输入年'));
        var month=Number(prompt('请输入月'));
        var day=Number(prompt('请输入日'));
        function getDay(years, month , day){
            //天数
            var days=day;
            if (month == 1) {  //如果月份为一月那 直接输出天数 跳出循环
                return days;
            }
            //判断月数
            //不是一月的话累加之前的月数加上当月的天数   months
            var months=[31,28,31,30,31,30,31,31,30,31,30,31];
            for (var i=0;i<month-1;i++) {   //第几天和之前所有天数和
                days += months[i];
            }
            if (isRn(years)  && month>2) {   //判断输入的是否是闰年  与大于2月    是的天数加一  否则跳出循环
                days++;         //加一天
            }
            return days;    
        }
        function isRn(num) {    //判断是否是闰年【能被4整除且不能被100整除,或者能被400整除】
            return num % 4 == 0 && num % 100 != 0 || num % 400 == 0;
        }
        document.write('今天是今年的第'+getDay(years, month , day)+'天');

如果要去掉上面三个输入,运行的话必须在下面更改底部代码 按年月日 输入具体值

document.write(‘今天是今年的第’+getDay(years, month , day)+’天’);
如document.write(‘今天是今年的第’+getDay(2000, 3 , 2)+’天’);

方法二

function pingrun(year){
      if(year%4==0&&year%100!=0 || year%400 ==0){
        return 29
      }else{
        return 28
      }
    }

    function getDays(year,month,day){
      // 1,3,5,7,8,10,12 =31`t``s
      // 4,6,9,11 =30
      // 2=28/29
      var result = pingrun(year)
      var sumDays = day;
      var monthDays = [0,31,result,31,30,31,30,31,31,30,31,30]

      for(var i = 0; i<month; i++){
        sumDays+=monthDays[i];
      }
      return sumDays;
    }

    var days = getDays(2020,12,10)
    console.log(days);

sw方法三

 function isRun(yer) {
            var rest = false;
            if ((yer % 4 === 0 && yer % 100 !== 0) || (yer % 400 === 0)) {
                return rest = true;
            }
         }      
         function get_day(yer, moth, day) {
            var days = day;
            for (var i = 1; i < moth; i++) {
                switch (i) {
                    case 1 :
                    case 3 :
                    case 5 :
                    case 7 :
                    case 8 :
                    case 10:
                    case 12:
                        days += 31;
                    break;
                    case 4 :
                    case 6 :
                    case 9 :
                    case 11 :
                        days += 30;
                    break;
                    case 2 :
                        if (isRun(yer)) {
                            days += 29;
                        }else {
                            days += 28;
                        }
                    break;                      
                }
            }
            return days;
         }
             var yer = Number(prompt("请输入多少年:"));
             var moth = Number(prompt("请输入月份:"));
             var day = Number(prompt("请输入几号:"));
             var n1 = get_day(yer,moth,day);
             document.write(n1);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值