打印
[实用程序源码及工具软件]

菜农星期公式、蔡勒星期公式、基姆拉尔森星期公式JS源码

[复制链接]
165|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 hotpower 于 2023-9-22 14:30 编辑

菜农电子淘宝:https://hotcomlock.taobao.com/ 准备出书:http://hotcomlock.com/hotcomlock.html
    function getweek(century, year, month, day)
    {
        var week, dateval, table;
        if (month <= 2)//1,2月变为去年的13,14月
        {
            year --;
            if (year < 0)
            {
                year = 99;
                century --;
                if (century < 0)
                {
                    century = 99;
                }
            }
            month |= 4;//1,2月查5,6月表
//                month += 12;//去年的13,14月
        }
        switch(weeksele.selectedIndex)
        {
            case 0:
/*
菜农星期公式
星期=(百年%4*5+年+年/4+(13*月+8)/5+日)%7
*/
                week = ((century & 3) * 5 + year + (year >> 2) + Math.floor((13 * month + 8) / 5) + day) % 7;
                break;
            case 1:
/*
蔡勒星期公式
星期=(203+百年/4-2*百年+年+年/4+(13*月+8)/5+日)%7
*/
                week = (203 + Math.floor(century / 4) - 2 * century + year + (year >> 2) + Math.floor((13 * month + 8) / 5) + day) % 7;
                break;
            case 2:
/*
基姆拉尔森星期公式
星期=(百年/4+百年*5+年+年/4+(13*月+8)/5+日)%7
*/
                week = (Math.floor(century / 4) + century * 5 + year + (year >> 2) + Math.floor((13 * month + 8) / 5) + day) % 7;
                break;
            case 3:
/*
菜农第二星期公式
星期=((百年*5)%20+年+年/4+(13*月+8)/5+日)%7
*/
                week = ((century * 5) % 20 + year + (year >> 2) + Math.floor((13 * month + 8) / 5) + day) % 7;
                break;
            case 4:
/*
菜农第三星期公式
星期=(((日期/100)*5)%20+日期%100+(日期%100)4+(13*月+8)/5+日)%7
*/
                dateval = century * 100 + year;
                week = ((Math.floor(dateval / 100) * 5) % 20 + year + (year >> 2) + Math.floor((13 * month + 8) / 5) + day) % 7;
                break;
            case 5:
/*
星期公式月表
星期=(百年%4*5+年+年/4+星期月表+日)%7
*/
                table = "2503514620";//3月为基月,3~12月,1,2月查5,6月表
                week = ((century & 3) * 5 + year + (year >> 2) + parseInt(table.substr(month-3, 1), 10) + day) % 7;
                break;
        }
        return week;
    }
HotPower超级CRC计算器 可以验证代码,如截图所示

菜农星期公式.png (180.98 KB )

菜农星期公式.png

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:[url=http://www.21ic.com/tools/HotWC3_V1.23.html]

1460

主题

21619

帖子

506

粉丝