如何计算星期几的简单公式

如题所述

可以用最著名的是蔡勒(Zeller)公式来计算。
即 w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
公式中的符号含义如下,w:星期;c:世纪-1;y:年(两位数);m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算);d:日;[ ]代表取整,即只要整数部分。(C是世纪数减一,y是年份后两位,M是月份,d是日数。1月和2月要按上一年的13月和 14月来算,这时C和y均按上一年取值。)
算出来的W除以7,余数是几就是星期几。如果余数是0,则为星期日。
====================================================
以2012年10月1日(100周年国庆)为例,用蔡勒(Zeller)公式进行计算,过程如下:
蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
=12+[12/4]+[20/4]-2×20+[26× (10+1)/10]+1-1
=12+[3]+5-40+[28.6]
=12+3+5-40+28
=8 (除以7余1)
即2012年10月1日(今年国庆)是星期1。
====================================================
以2049年10月1日(100周年国庆)为例,用蔡勒(Zeller)公式进行计算,过程如下:
蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
=49+[49/4]+[20/4]-2×20+[26× (10+1)/10]+1-1
=49+[12.25]+5-40+[28.6]
=49+12+5-40+28
=54 (除以7余5)
即2049年10月1日(100周年国庆)是星期5。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-05
—— 蔡勒(Zeller)公式
历史上的某一天是星期几?未来的某一天是星期几?关于这个问题,有很多计算公式(两个通用计算公式和一些分段计算公式),其中最著名的是蔡勒(Zeller)公式。即w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1

公式中的符号含义如下,w:星期;c:世纪-1;y:年(两位数);m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算);d:日;[ ]代表取整,即只要整数部分。(C是世纪数减一,y是年份后两位,M是月份,d是日数。1月和2月要按上一年的13月和 14月来算,这时C和y均按上一年取值。)

算出来的W除以7,余数是几就是星期几。如果余数是0,则为星期日。

以2049年10月1日(100周年国庆)为例,用蔡勒(Zeller)公式进行计算,过程如下:
蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
=49+[49/4]+[20/4]-2×20+[26× (10+1)/10]+1-1
=49+[12.25]+5-40+[28.6]
=49+12+5-40+28
=54 (除以7余5)
即2049年10月1日(100周年国庆)是星期5。
第2个回答  2023-06-29

计算星期几的简单公式是蔡勒公式(Zeller's Congruence),公式如下:h = (q + [(13*(m+1))/5] + K + [K/4] + [J/4] - 2J) mod 7其中,h代表星期几(0为星期六,1为星期天,2为星期一,依此类推),q是日期(1到31的值),m是月份(3为3月,4为4月,依此类推,1月和2月看作上一年的13月和14月),K是年份的最后两位数,J是年份除以100后的整数部分。请注意,以上公式是基于格里高利历的,对于每月都有28天的情况(比如二月),需要特别处理。以下是Python示例代码:```pythondef calculate_weekday(day, month, year): if month == 1 or month == 2: month += 12 year -= 1 K = year % 100 J = year // 100 h = (day + ((13*(month+1))//5) + K + (K//4) + (J//4) - 2*J) % 7 # 星期几编号转换为实际星期几名称 weekdays = [\"Saturday\", \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\"] return weekdays[h]# 示例使用day = 25month = 3year = 2022weekday = calculate_weekday(day, month, year)print(\"The date {}-{}-{} is {}\".format(year, month, day, weekday))```你可以根据需要自定义输入日期的`day`、`month`和`year`值,运行代码后即可得到日期的星期几。
第3个回答  2017-01-07
2017年可以这样计算
记住下面12个数字,每个数字按顺序对应1至12月,如一月对应6,五月对应0,等等:
622,503,514,624
计算公式:
(某月的日期+当月对应数字)÷7
如整除,为星期天,不整除,余数是几,就是星期几。
例如
1月28日,春节
(28+6)÷7=4...6,余数是6,1月28日为星期六,
5月23日
(23+0)÷7=3...2,余数是2,5月23日为星期二,
10月1日
(1+6)÷7=1,无余数,10月1日为星期天。
注意,上面的12个数字只适用于今年。本回答被网友采纳
第4个回答  2018-03-08
星期几=(日期+y+[(31m)/12]+[y/4]-[y/100]+[y/400])mod7
f=[(14-月份)/12]
也就是说 月份是1 或2 时 f是1 其他月份是0
y=年份-f
m=月份+12f-2
[ ]表示算出里面的部分后取整 非四舍五入
mod7表示取括号中的答案÷7的余数
相似回答