A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 林成彬 高级黑马   /  2013-12-18 14:07  /  1694 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 林成彬 于 2013-12-18 14:48 编辑

刚刚碰上了一个问题,输入一个日期(yyyy-MM-dd),然后计算出该日期是星期几,上网搜索了一下,要用到吉姆拉尔森计算公式,请问这个公式是什么原理实现的呢?

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 taxue0504 于 2013-12-18 14:24 编辑

蔡勒公式
W=[C/4]-2C+y+[y/4]+[26(m+1)/10]+d-1 (其中[ ]为取整符号)  
其中,W是所求日期的星期数.如果求得的数大于7,可以减去7的倍数,直到余数小于7为止.c是公元年份的前两位数字,y是已知公元年份的后两位数字;m是月数,d是日数.方括[ ]表示只截取该数的整数部分

基姆拉尔森计算公式
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1) mod 7
在公式中d表示日期中的日数,m表示月份数,y表示年数。
把一月和二月看成是上一年的十三月和十四月
//y-年,m-月,d-日期

  1. string CaculateWeekDay(int y,int m, int d)
  2. {
  3. if(m==1||m==2) {
  4. m+=12;
  5. y--;
  6. }
  7. int week=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7;
  8. string weekstr="";
  9. switch(week)
  10. {
  11. case 1: weekstr="星期一"; break;
  12. case 2: weekstr="星期二"; break;
  13. case 3: weekstr="星期三"; break;
  14. case 4: weekstr="星期四"; break;
  15. case 5: weekstr="星期五"; break;
  16. case 6: weekstr="星期六"; break;
  17. case 0: weekstr="星期日"; break;
  18. }
  19. return weekstr;
  20. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报 1 0
taxue0504 发表于 2013-12-18 14:21
蔡勒公式
W=[C/4]-2C+y+[y/4]+[26(m+1)/10]+d-1 (其中[ ]为取整符号)  
其中,W是所求日期的星期数.如果 ...

非常感谢
回复 使用道具 举报
蔡勒公式计算星期 原理   http://blog.segmentfault.com/zifeimen/1190000000345958
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马