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>
  • 相关阅读:
    【转】 Docker(部署常见应用):Docker安装Alibaba Nacos教程(单机-集群)
    【转】 SpringCloudAlibaba--10——sentinel
    【转】 SpringCloudAlibaba--09——sentinel
    【转】 SpringCloudAlibaba--08——sentinel
    【转】 SpringCloudAlibaba--07——gateWay
    【转】 SpringCloudAlibaba--06——geteway
    1045
    1045 access denied for user 'root'@'localhost' using password yes的解决方法
    在PHP中使用CURL
    zendstudio快捷键复制行Ctrl+Alt+向下无效的解决方法
  • 原文地址:https://www.cnblogs.com/bwnnxxx123/p/12953750.html
Copyright © 2011-2022 走看看