當前位置:編程學習大全網 - 編程語言 - 如何計算某天是星期幾

如何計算某天是星期幾

如何計算某天是星期幾

日期格式 y-m-d,y為年份數(y>1582),m為月份數(0<m<13),d為日數(0<d<28、29、30、31)。y、m、d為整數。例如2008-8-1,各變量分別是y=2008,m=8,d=1。

1、常用公式

W = [y-1] + [(y-1)/4] - [(y-1)/100] + [(y-1)/400] + D

式中變量說明:W為星期數,y為年份數,D為該日期在該年中的排序數;[X]為對X取整,下同。

2、蔡勒(Zeller)公式

W=Y+[Y/4]+[C/4]-2C+[26(M+1)/10]+d-1

公式中的符號含義如下:

W為星期數;C為世紀;Y為年(兩位數); M為月數(M=m(當m>2);M=m+12(m<3));d為日。

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

3、基姆拉爾森計算公式

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來代入公式計算。

4、蔡勒公式壹種改進

相比於另外壹個通用通用計算公式而言,蔡勒(Zeller)公式大大降低了計算的復雜度。不過,另外有壹個似乎更加簡潔更簡單的改進公式,提出這個公式的人是馮思琮[1] [2] :

W=[y/4]+r(y/7)-2r(c/4)+m’+d

下,其他符號與蔡勒公式中含義相同。r(X)為對表達式X取余;

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。

-----------------------------

[註] 以上的公式都只適合於1582年10月15日之後的情形,即我國明朝萬歷十年間。羅馬教皇格裏高利十三世在1582年組織了壹批天文學家,根據哥白尼日心說計算出來的數據,對儒略歷作了修改。將1582年10月5日到14日之間的10天宣布撤銷,繼10月4日之後為10月15日。

後來人們將這壹新的歷法稱為“格裏高利歷”,也就是今天世界上所通用的歷法,簡稱格裏歷或公歷。

  • 上一篇:怎樣退訂超級會員
  • 下一篇:SAP都有哪些模塊?聽說有20多個 請詳細列舉
  • copyright 2024編程學習大全網