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

蔡勒(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代表星期日

原文地址:https://www.cnblogs.com/velscode/p/10105590.html

时间: 2024-09-30 00:08:07

蔡勒公式——根据年月日计算星期几的相关文章

蔡勒公式求今天是星期几?

之所以知道蔡勒公式,是因为今天在九度上做的一道题目[题目1043:Day of Week].以前也曾经做过求星期几这样的题目,当时的做法比较粗暴:已经知道某年某月某日是星期几,要求现在给的某天是星期几,直接求给的日期和已知日期的相差天数对7取余,再根据已知的星期做相应的调整即可.这样的做法不仅繁琐,而且一不留神就有可能算错.这次又碰到类似的题目,希望尝试新的方法.于是在查资料的过程中,知道了蔡勒公式.于是用蔡勒公式来解决了这道题目,虽然知道蔡勒公式,但是在使用过程中依旧错误不断.其实是因为对蔡勒

08--MOOC--C/C++ 根据年月日计算星期几——蔡勒公式篇

C/C++ 根据年月日计算星期几——蔡勒公式篇 蔡勒公式  蔡勒(Zeller)公式:是一个计算星期的公式.随便给一个日期,就能用这个公式推算出是星期几.蔡勒公式如下:W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1或者是:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1公式中的符号含义如下:w:星期: w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六c:世纪-1(前两

POJ 3047 Bovine Birthday 给出年月日求星期 蔡勒公式

题目来源:POJ 3047 Bovine Birthday 题意:... 思路:蔡勒公式 适合于1582年(中国明朝万历十年)10月15日之后的情形 公式 w = y + y/4 + c/4 - 2*c + 26 * (m+1)/10 + d - 1; m如果是1 2 月份 y要倒退1年 m += 12 y是年份的后两位 y = year%100 c是世纪 c = year/100 #include <cstdio> #include <cstring> using namespa

今天星期几--蔡勒公式

今天星期几? 这样的问提在程序中常常是和日期一起来计算了. 在没接触蔡勒公式的时候,要我做我也很费劲的先去计算一更有多少天,然后在mod7: 但是今天遇到一个了这个公式.我就来看一下. 这就是公式. w就是我们要的周几了,c是世纪数-1(其实就是年份的前两位),y是年份的后两位,m是月份,d是天数 例如2014年5月8号  c=20 y =14 m=5 d=8: 看到这个东西是不是很喜欢啊,套上就出结果.别急,这个结果不是没天都对的,因为这里有两个特殊的月份需要处理,1月和2月,你会发现当你带入

ZOJ 3876 May Day Holiday 蔡勒公式

                                               H - May Day Holiday Description As a university advocating self-learning and work-rest balance, Marjar University has so many days of rest, including holidays and weekends. Each weekend, which consists o

2017&quot;百度之星&quot;程序设计大赛 - 初赛(A)-1001.小C的倍数问题(HDU6108) 1005.今夕何夕-蔡勒公式 (HDU6112)

补完题?不存在的. 这么久了,还是一条咸鱼,看一堆乱七八糟的东西,写一堆没用的水题,一点进步都没有,还是那么菜,菜的掉渣. 这个百毒之星初赛A还会写两道最简单的水题,初赛B一点也不会,菜的难过... 最近看的dp和kmp,垂死挣扎,一点一点看吧... cf打的还是那么弱,一点进步都没有... 好久没写博客了,最近写的都是水题,都没有写博客的必要,但是还是来水一水(:′д`)ゞ,要不就没有写博客的习惯了. 吐槽百毒之星,比赛的时候1005交上去,莫名其妙Output Limit Exceeded,

蔡勒公式

今天看到一个很有趣的公式 给定一个日期,问这个日期是星期几? 一般我们都会通过今天的日期和星期推算出0001年01月01日的星期,然后对于输入的日期来推算 注意要考虑闰年什么的! 有了蔡勒公式,直接算哦 上公式: w=(y + [y/4] + [c/4] - 2*c +[26*(m+1)/10] + d - 1)%7 若1582年10月4日或之前的改为 w=(y + [y/4] + [c/4] - 2*c +[26*(m+1)/10] + d +2)%7 c.y.m.d分别为世纪  年份  月

python 日期换算星期 蔡勒公式

1 #!/usr/bin/env python 2 # encoding: utf-8 3 4 #coding=utf-8 5 6 date_star={ 7 '1':'星期一', 8 '2':'星期二', 9 '3':'星期三', 10 '4':'星期四', 11 '5':'星期五', 12 '6':'星期六', 13 '0':'星期日', 14 } 15 16 def caile(*args): 17 year,month,day = args 18 month = int(month) 1

已知日期,O(1)推算周几---蔡勒公式