[实用程序源码及工具软件] 菜农星期公式、蔡勒星期公式、基姆拉尔森星期公式JS源码

[复制链接]
 楼主| hotpower 发表于 2023-9-18 22:53 | 显示全部楼层 |阅读模式
本帖最后由 hotpower 于 2023-9-22 14:30 编辑

菜农电子淘宝:https://hotcomlock.taobao.com/ 准备出书:http://hotcomlock.com/hotcomlock.html
  1.     function getweek(century, year, month, day)
  2.     {
  3.         var week, dateval, table;
  4.         if (month <= 2)//1,2月变为去年的13,14月
  5.         {
  6.             year --;
  7.             if (year < 0)
  8.             {
  9.                 year = 99;
  10.                 century --;
  11.                 if (century < 0)
  12.                 {
  13.                     century = 99;
  14.                 }
  15.             }
  16.             month |= 4;//1,2月查5,6月表
  17. //                month += 12;//去年的13,14月
  18.         }
  19.         switch(weeksele.selectedIndex)
  20.         {
  21.             case 0:
  22. /*
  23. 菜农星期公式
  24. 星期=(百年%4*5+年+年/4+(13*月+8)/5+日)%7
  25. */
  26.                 week = ((century & 3) * 5 + year + (year >> 2) + Math.floor((13 * month + 8) / 5) + day) % 7;
  27.                 break;
  28.             case 1:
  29. /*
  30. 蔡勒星期公式
  31. 星期=(203+百年/4-2*百年+年+年/4+(13*月+8)/5+日)%7
  32. */
  33.                 week = (203 + Math.floor(century / 4) - 2 * century + year + (year >> 2) + Math.floor((13 * month + 8) / 5) + day) % 7;
  34.                 break;
  35.             case 2:
  36. /*
  37. 基姆拉尔森星期公式
  38. 星期=(百年/4+百年*5+年+年/4+(13*月+8)/5+日)%7
  39. */
  40.                 week = (Math.floor(century / 4) + century * 5 + year + (year >> 2) + Math.floor((13 * month + 8) / 5) + day) % 7;
  41.                 break;
  42.             case 3:
  43. /*
  44. 菜农第二星期公式
  45. 星期=((百年*5)%20+年+年/4+(13*月+8)/5+日)%7
  46. */
  47.                 week = ((century * 5) % 20 + year + (year >> 2) + Math.floor((13 * month + 8) / 5) + day) % 7;
  48.                 break;
  49.             case 4:
  50. /*
  51. 菜农第三星期公式
  52. 星期=(((日期/100)*5)%20+日期%100+(日期%100)4+(13*月+8)/5+日)%7
  53. */
  54.                 dateval = century * 100 + year;
  55.                 week = ((Math.floor(dateval / 100) * 5) % 20 + year + (year >> 2) + Math.floor((13 * month + 8) / 5) + day) % 7;
  56.                 break;
  57.             case 5:
  58. /*
  59. 星期公式月表
  60. 星期=(百年%4*5+年+年/4+星期月表+日)%7
  61. */
  62.                 table = "2503514620";//3月为基月,3~12月,1,2月查5,6月表
  63.                 week = ((century & 3) * 5 + year + (year >> 2) + parseInt(table.substr(month-3, 1), 10) + day) % 7;
  64.                 break;
  65.         }
  66.         return week;
  67.     }
HotPower超级CRC计算器 可以验证代码,如截图所示

菜农星期公式.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

1460

主题

21619

帖子

508

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:[url=http://www.21ic.com/tools/HotWC3_V1.23.html]

1460

主题

21619

帖子

508

粉丝
快速回复 在线客服 返回列表 返回顶部