近日在論壇上看到有人在問星期算法,特別整理了一下,這些算法都是從網(wǎng)上搜索而來。希望對大家有所幫助。
一:常用公式
W = [Y-1] + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + D
Y是年份數(shù),D是這一天在這一年中的累積天數(shù),也就是這一天在這一年中是第幾天。
二:蔡勒(Zeller)公式
w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
公式中的符號含義如下,w:星期;c:世紀;y:年(兩位數(shù)); m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月來計算,比如2003年1月1日要看作2002年的13月1日來計算);d:日;[ ]代表取整,即只要整數(shù)部分。
相比于通用通用計算公式而言,蔡勒(Zeller)公式大大降低了計算的復雜度。
三:對蔡勒(Zeller)公式的改進
作者:馮思琮
相比于另外一個通用通用計算公式而言,蔡勒(Zeller)公式大大降低了計算的復雜度。不過,筆者給出的通用計算公式似乎更加簡潔(包括運算過程)?,F(xiàn)將公式列于其下:
W=[y/4]+r (y/7)-2r(c/4)+m’+d
公式中的符號含義如下,r ( )代表取余,即只要余數(shù)部分;m’是m的修正數(shù),現(xiàn)給出1至12月的修正數(shù)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表示日期中的日數(shù),m表示月份數(shù),y表示年數(shù)。
注意:在公式中有個與其他公式不同的地方:
把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10則換算成:2003-13-10來代入公式計算。
posted on 2007-01-16 23:07
xrzp 閱讀(1914)
評論(3) 編輯 收藏 所屬分類:
JAVA