zoukankan      html  css  js  c++  java
  • 已知某年某月某日是星期几,输入一个年月日(1980~2030),求得该日为星期几。并判断输入的日期是否合法(无32号及平闰年2月天数等)

    以下是星期计算公式

    (年+年/4+年/400-年/100-年基数+月基数+日)/7=……余星期几

    注:式中分数均取整

    年基数,平年1,闰年2,

    月基数,1、平年:一月0, 二月3, 三月3, 四月6, 五月1, 六月4,

    七月0, 八月3, 九月5, 十月0, 十一月3, 十二月5.

    2、闰年:一月0, 二月3, 三月4, 四月0, 五月2, 六月5,

    七月0, 八月3, 九月6, 十月1, 十一月4, 十二月6.

    如:1949年10月1日是星期几?

    (1949+1949/4+1949/400-1949/100-1+0+1)/7

    =(1949+487+4-19-1+0+1)/7

    =345……6

    即该日为星期六。

    代码如下:

    <!DOCTYPE html>
    <html lang="en">

    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            input {
                 100px;
            }

            #btn {
                 150px;
            }
        </style>
    </head>

    <body>
        <input type="text" id="txt1">
        <input type="text" id="txtm">
        <input type="text" id="txt2">
        <input type="button" id="btn" value="这一天是星期几?">
        <input type="text" id="txt3">
    </body>

    </html>

    <script>
        var otxt1 = document.getElementById("txt1");
        var osel = document.getElementById("txtm");
        var otxt2 = document.getElementById("txt2");
        var obtn = document.getElementById("btn");
        var otxt3 = document.getElementById("txt3");
        obtn.onclick = function () {
            justify(Number(otxt1.value), Number(osel.value), Number(otxt2.value));
            otxt3.value = week(Number(otxt1.value), Number(osel.value), Number(otxt2.value));
        }
        var njs = 0;
        var yjs = 0;
        function week(n, y, r) {

            if (n % 4 == 0 && n % 100 != 0 || n % 400 == 0) {//闰年
                njs = 2;
                switch (y) {
                    case 1:
                    case 4:
                    case 7:
                        yjs = 0; break;
                    case 2:
                    case 8:
                        yjs = 3; break;
                    case 5:
                        yjs = 2; break;
                    case 6:
                        yjs = 5; break;
                    case 9:

                        yjs = 6; break;
                    case 10:
                        yjs = 1; break;
                    case 11:
                    case 3:
                        yjs = 4; break;
                    case 12:
                        yjs = 6; break;
                    default:
                        yjs = 999; break;
                }
            } else {
                njs = 1;
                switch (y) {
                    case 1:
                    case 7:
                    case 10:
                        yjs = 0; break;
                    case 2:
                    case 3:
                    case 8:
                    case 11:
                        yjs = 3; break;
                    case 9:
                    case 12:
                        yjs = 5; break;
                    case 4:
                        yjs = 6; break;
                    case 5:
                        yjs = 1; break;
                    case 6:
                        yjs = 4; break;
                }
            }

            var w = (n + parseInt(n / 4) + parseInt(n / 400) - parseInt(n / 100) - njs + yjs + r) % 7;
            switch (w) {
                case 0:
                    return "星期天";
                case 1:
                    return "星期一";
                case 2:
                    return "星期二";
                case 3:
                    return "星期三";
                case 4:
                    return "星期四";
                case 5:
                    return "星期五";
                case 6:
                    return "星期六";
            }
        }

        function justify(n, y, r) {
            if (n < 1980 || n > 2020) {
                alert("请输入1980-2020年的年份");
                return false;
            }
            if (y < 1 || y > 12) {
                alert("请输入1-12之间的月份");
                return false;
            }
            if (n % 4 == 0 && n % 100 != 0 || n % 400 == 0) {
                if (y == 2) {
                    if (r > 29) {
                        alert("该年是闰年,2月总共29天");
                        return false;
                    }
                }
            } else {
                if (y == 2) {
                    if (r > 28) {
                        alert("该年是平年,2月总共28天");
                        return false;
                    }
                }
            }
            switch (y) {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    if (r < 0 || r > 31) {
                        alert("超出日期范围");
                        return false;
                    }
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    if (r < 0 || r > 30) {
                        alert("超出日期范围");
                        return false;
                    }
                    break;
                case 2:
                    if (r < 0 || r > 29) {
                        alert("超出日期范围");
                        return false;
                    }
            }
            return true;
        }
    </script>
  • 相关阅读:
    什么是 bean 的自动装配?
    什么是 Spring 的内部 bean?
    什么是 Spring 的 MVC 框架?
    Spring AOP and AspectJ AOP 有什么区别?
    解释 JDBC 抽象和 DAO 模块?
    volatile 类型变量提供什么保证?
    一个 Spring Bean 定义 包含什么?
    什么是 Spring MVC 框架的控制器?
    使用 Spring 访问 Hibernate 的方法有哪些?
    什么是 Callable 和 Future?
  • 原文地址:https://www.cnblogs.com/bwnnxxx123/p/12953750.html
Copyright © 2011-2022 走看看