計算任何一天是星期幾的幾種演算法

2021-09-30 03:01:06 字數 983 閱讀 9150

近日在論壇上看到有人在問星期演算法,特別整理了一下,這些演算法都是從網上搜尋而來,演算法的實現是我在專案中寫的。希望對大家有所幫助。

一:常用公式

w = [y-1] + [(y-1)/4] - [(y-1)/100] + [(y-1)/400] + d

y是年份數,d是這一天在這一年中的累積天數,也就是這一天在這一年中是第幾天。

二:蔡勒(zeller)公式

w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1

公式中的符號含義如下,w:星期;c:世紀;y:年(兩位數); m:月(m大於等於3,小於等於14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月來計算,比如2023年1月1日要看作2023年的13月1日來計算);d:日;[ ]代表取整,即只要整數部分。

相比於通用通用計算公式而言,蔡勒(zeller)公式大大降低了計算的複雜度。

三:對蔡勒(zeller)公式的改進

公式中的符號含義如下,r ( )代表取餘,即只要餘數部分;m』是m的修正數,現給出1至12月的修正數1』至12』如下:(1』,10』)=6;(2』,3』,11』)=2;(4』,7』)=5;5』=0;6』=3;8』=1;(9』,12』)=4(注意:在筆者給出的公式中,y為潤年時1』=5;2』=1)。其他符號與蔡勒(zeller)公式中的含義相同。

四:基姆拉爾森計算公式

這個公式名稱是我給命名的,哈哈希望大家不要見怪。

w= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7

在公式中d表示日期中的日數,m表示月份數,y表示年數。

注意:在公式中有個與其他公式不同的地方:

把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10則換算成:2003-13-10來代入公式計算。

計算任何一天是星期幾的幾種演算法

計算任何一天是星期幾的幾種演算法 計算任何一天是星期幾的幾種演算法 一 常用公式 w y 1 y 1 4 y 1 100 y 1 400 d y是年份數,d是這一天在這一年中的累積天數,也就是這一天在這一年中是第幾天。二 蔡勒 zeller 公式 w y y 4 c 4 2c 26 m 1 10 d...

計算任何一天是星期幾的幾種演算法

近日在論壇上看到有人在問星期演算法,特別整理了一下,這些演算法都是從網上搜尋而來,演算法的實現是我在專案中寫的。希望對大家有所幫助。一 常用公式 w y 1 y 1 4 y 1 100 y 1 400 d y是年份數,d是這一天在這一年中的累積天數,也就是這一天在這一年中是第幾天。二 蔡勒 zell...

計算任何一天是星期幾的幾種演算法

近日在論壇上看到有人在問星期演算法,特別整理了一下,這些演算法都是從網上搜尋而來,演算法的實現是我在專案中寫的。希望對大家有所幫助。一 常用公式 w y 1 y 1 4 y 1 100 y 1 400 d y是年份數,d是這一天在這一年中的累積天數,也就是這一天在這一年中是第幾天。二 蔡勒 zell...