【JS】输入年月日,判断该日期是当年的第几天。

简单版

var year = Number(prompt("请输入年"));  //prompt()接收的是字符类型,进行运算时需要类型转换。
var month = Number(prompt("请输入月"));
var day = Number(prompt("请输入日"));
var days = 0;
//闰年判断 
if((year%4==0 && year%100!=0) || (year%400==0 && year%3200!=0) || year%172800==0){
    var leap = 1;
}else{
    var leap = 0;
}
switch(month){
        /*当变量表达式(month)所表达的量与其中一个case语句中的常量相符时,就执行此case语句后面的语句,
          并依次下去执行后面所有case语句中的语句,除非遇到break;语句跳出switch语句为止。
          如果变量表达式的量与所有case语句的常量都不相符,就执行default语句中的语句。
        */
        case 12: days += 30;
        case 11: days += 31;
        case 10: days += 30;
        case 9: days += 31;
        case 8: days += 31;
        case 7: days += 30;
        case 6: days += 31;
        case 5: days += 30;
        case 4: days += 31;
        case 3: days += 28 + leap;
        case 2: days += 31;
        case 1: days += day; break;
        default: alert("输入错误!"); break;
    }
    alert(year+"年"+month+"月"+day+"日是"+year+"年的第"+days+"天。");

加入输入判断后的详细代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>输入年月日,并输出该日期是当年的第几天</title>
</head>
<body>
    <script>
        var days = 0;
        while(true){  //设置循环,在输入错误时可重新输入。
            var year = Number(prompt("请输入年份"));  //prompt()接收的是字符类型,需要进行类型转换。
            if(year != null){
                if(Number.isInteger(year)){  //用Number.isInteger()方法判断是否为整数
                    if(year > 0){ 
                        //闰年判断 
                        var leap = (year%4==0 && year%100!=0) || (year%400==0 && year%3200!=0) || year%172800==0;
                        while(true){
                            var month = Number(prompt("请输入月份"));
                            if(month != null){
                                if(Number.isInteger(month)){                                     
                                    if(month>=1 && month<=12){
                                        while(true){
                                            var day = Number(prompt("请输入该月的第几天"));
                                            if(day != null){
                                                if(Number.isInteger(day)){
                                                    if(day>=1 && day<=31){
                                                        if(month == 2){
                                                            if(day==30 || day==31){
                                                                alert("2月份没有30号或者31号");
                                                            }else if(day == 29){ 
                                                                if(leap == 0){
                                                                    alert("平年的二月份没有29号");
                                                                }else{
                                                                    days = getDaysByMonth(month);
                                                                    alert(year+"年"+month+"月"+day+"日是"+year+"年的第"+days+"天。");
                                                                    break;
                                                                }
                                                            }else{
                                                                days = getDaysByMonth(month);
                                                                alert(year+"年"+month+"月"+day+"日是"+year+"年的第"+days+"天。");
                                                                break;
                                                            }
                                                        }else if(month==4||month==6||month==9||month==11){
                                                            if(day == 31){
                                                                alert("4、6、9、11月没有31号");
                                                            }else{
                                                                days = getDaysByMonth(month);
                                                                alert(year+"年"+month+"月"+day+"日是"+year+"年的第"+days+"天。");
                                                                break;
                                                            }
                                                        }else{
                                                            days = getDaysByMonth(month);
                                                            alert(year+"年"+month+"月"+day+"日是"+year+"年的第"+days+"天。");
                                                            break;
                                                        }     
                                                    }else{
                                                        alert("天数的范围是1-31");
                                                    }
                                                }else{
                                                    alert("请正确的天数!");
                                                }
                                            }else{
                                                alert("请输入一个天数!")
                                            }
                                        }
                                        break;                               
                                    }else{
                                        alert("月份的范围是1-12");
                                    }
                                }else{
                                    alert("请正确的月份!");
                                }
                            }else{
                                    alert("请输入一个月份!");
                            }
                        }
                        break;
                    }else{
                        alert("年份需大于0!");
                    }
                }else{
                    alert("请输入正确的年份!");
                }
            }else{
                alert("请输入一个年份!")
            }    
        }
        //因为switch语句会多次被使用,因此封装一个函数以便多次调用。
        function getDaysByMonth(month){
            switch(month){
                /*当变量表达式(month)所表达的量与其中一个case语句中的常量相符时,就执行此case语句后面的语句,
                  并依次下去执行后面所有case语句中的语句,除非遇到break;语句跳出switch语句为止。
                  如果变量表达式的量与所有case语句的常量都不相符,就执行default语句中的语句。
                */
                case 12: days += 30;
                case 11: days += 31;
                case 10: days += 30;
                case 9: days += 31;
                case 8: days += 31;
                case 7: days += 30;
                case 6: days += 31;
                case 5: days += 30;
                case 4: days += 31;
                case 3: days += 28 + leap;
                case 2: days += 31;
                case 1: days += day; break;
                //default: alert("输入错误!"); break;
            }
            return days;
        }
    </script>
</body>
</html>

关于代码中用到的方法在【JS】输入年月日,并输出该日期。(闰年判断)一文中做了详述,可参考。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值