A-A+

判断某天是周几的基姆拉尔森算法

2015年07月05日 C/C++ 阅读 1,142 views 次

在进行时间方面的程序设计时经常会遇到需要判断给定的某年某天某月是周几。下面将采用基姆拉尔森算法来解决此问题。

1.基姆拉尔森算法

基姆拉尔森计算公式:
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
在公式中d表示日期中的日数,m表示月份数,y表示年数。
得到的结果中0-6分别代表周一至周日,即0代表周一,1代表周二……
注意:在公式中有个与其他公式不同的地方:
把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。
以公元元年为参考,公元元年1月1日为星期一。

2. 实现函数

所用编译器:Visual Studio 2008

int CTimeHandle::DayJudgeWeek(int iyear, int imonth, int iday)
{
         if(imonth == 1 | imonth == 2)
         {
                   imonth += 12;
                   iyear--;
         }
         int iweek;
         iweek = (iday + 2 * imonth + 3 * (imonth + 1) / 5 + iyear + iyear / 4 -iyear / 100 +iyear / 400) % 7 + 1;
         return iweek;
}
注:此函数对基姆拉尔森算法进行了更改,在原结果上加1,即结果1代表周一,2代表周二……7代表周日。
坐倚北风网站福利:本站用户可联系“HyperMesh钉子户”,免费获取Altair内部学习资料,包含HyperMesh,OptiStruct拓扑优化,HyperStudy(DOE+优化),电磁,流体等软件。联系微信cae-max
为您推荐:

给我留言

© 坐倚北风 版权所有 严禁镜像复制 苏ICP备15034888号. 基于 Ality 主题定制 AliCMS
联系邮箱:leanwind@163.con,微信公众号:数字化设计CAX联盟

用户登录

分享到: