蔡勒公式——根据年月日计算星期几

Posted velscode

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蔡勒公式——根据年月日计算星期几相关的知识,希望对你有一定的参考价值。

蔡勒(Zeller)公式,是一个计算星期的公式,随便给一个日期,就能用这个公式推算出是星期几。

计算公式

由于罗马教皇搞了一些骚操作,这里给出的公式仅适用于1582年10月15日以后的星期,详情可参考

格里高利历

技术分享图片

符号意义

w:星期; w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六

c:世纪(注:一般情况下,在公式中取值为已经过的世纪数,也就是年份除以一百的结果,而非正在进行的世纪,也就是现在常用的年份除以一百加一;不过如果年份是公元前的年份且非整百数的话,c应该等于所在世纪的编号,如公元前253年,是公元前3世纪,c就等于-3)

y:年(一般情况下是后两位数,如果是公元前的年份且非整百数,y应该等于cMOD100+100)

m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算)

d:日

[ ]代表取整,即只要整数部分。

C语言代码

int Calculate_Week( int year , int month, int day )
{
    int c,y,week;
    if (month == 1 || month == 2)
    year--, month += 12;
    c = year / 100;
    y = year - c * 100;
    week = y + y / 4 + c / 4 - 2 * c + 26 * (month + 1) / 10 + day - 1;
    while (week < 0)
    week += 7;
    week %= 7;
    return week;
}

吐槽

返回值0代表星期日

以上是关于蔡勒公式——根据年月日计算星期几的主要内容,如果未能解决你的问题,请参考以下文章

c语言算某天使星期几,使用了蔡勒公式,可是2000年1月1日到2月29日这段时间的反馈结果都是错的,求解~

谁知道怎么用C语言编写万年历啊

计算某一天是星期几?—— 蔡勒(Zeller)公式

蔡勒公式是啥?

蔡勒公式是?

蔡勒公式不对啊???