Colorful Life2010

关于星期算法的几种经典算法。
Weather:不關心了

一:常用公式

 

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月来计算,比如2003年1

月1日要看作2002年的13月1日来计算);d:日;[ ]代表取整,即只要整数部分。

 

相比于通用通用计算公式而言,蔡勒(Zeller)公式大大降低了计算的复杂度。

 

三:对蔡勒(Zeller)公式的改进

 

作者:冯思琮

相比于另外一个通用通用计算公式而言,蔡勒(Zeller)公式大大降低了计算的复杂度。

不过,笔者给出的通用计算公式似乎更加简洁(包括运算过程)。现将公式列于其下:

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

 

公式中的符号含义如下,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)公式中的含义相同。

 

四:XXXX计算公式

 

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来代入公式计算。
 

[关于星期算法的几种经典算法。]的回复

Mickey 于 2007-12-13 19:34:41 发表 | IP:58.24.234.*

看起来不错. 收藏一下.

ZZZzzz 于 2007-12-14 10:39:30 发表 | IP:152.104.150.*

你的意思是这是用来算这是一年中的第几个星期是吧

柠檬园主 于 2007-12-17 13:58:01 发表 | IP:218.24.142.*

8484,是求当天是星期几的...

4#   king 于 2011-11-01 16:41:41 发表 | IP:221.204.184.*
请问2000年2月28日 是星期几 怎么带进去算出来是错的
柠檬园主 2011-11-11 13:48:09 回复:

这个...很久木有搞asp了,早忘了...

Post a Comment~