JavaScript函数调用判断日期是否合法

452 阅读1分钟
利用函数调用判断日期是否合法

分析:首先判断年份是否合法,再判断月份是否合法,最后判断日期。需要注意的是判断日期的时候,每个月份的天数是不一样的,需要具体分析,特别是二月份,当年份是闰年的时候有29天,不是闰年有28天。

    <span>请输入年份:</span>
    <input type="text" id="year">
    <span>请输入月份:</span>
    <input type="text" id="month">
    <span>请输入日期:</span>
    <input type="text" id="data">
    <button id="btn">判断</button>
    <input type="text" id="res">

    <script>
        //用函数封装一个获取对象
        function get(id){
            return document.getElementById(id);
        }

        //调用函数获取对象
        var oYear = get('year');
        var oMonth = get('month');
        var oData = get("data");
        var oBtn = get('btn');
        var oRes = get('res');

        //用函数封装一个判断日期是否合法:
        function judgeData(y,m,d){

            //这里限制年份范围为1000-3000之间,且年份不能为小数
            if(y >= 1000 && y <= 3000 && y % 1 == 0){
                
                //判断月份
                if(m >= 1 && m <= 12 && m % 1 == 0){

                    //判断日期 :注意具体分析2月份是否为闰年,令每个月最大的天数为maxDay
                    var maxDay ;
                    if(m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12){
                        maxDay = 31 ;
                    }
                    else if(m == 4 || m == 6 || m == 9 || m == 11){
                        maxDay = 30 ;
                    }
                    else if(m == 2){
                        //判断年份是否为闰年,从而判断二月天数
                        if(y % 4 == 0 && y % 100 != 0 || y % 400 == 0){
                            maxDay = 29 ;
                        }
                        else{
                            maxDay = 28 ;
                        }
                    }

                    //判断日期是否合法
                    if(d >= 1 && d <= maxDay && d % 1 == 0){
                        return true ;
                    }

                }
            }
            return false ;
        }

        //绑定点击事件
        oBtn.onclick = function(){

            //拿到年份、月份、日期
            var y = oYear.value ;
            var m = oMonth.value ;
            var d = oData.value ;

            //调用函数判断日期是否合法:
            var res = judgeData(y , m , d) ;

            // oRes.value = res ;
            if(res){
                oRes.value = '日期合法' ;
            }
            else{
                oRes.value = '日期不合法' ;
            }

        }
    </script>

1639317284(1).png