蔡勒(Zeller)公式:根据日期推算是星期几

Zeller's Congruence:

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

 

公式中的符号含义如下:
w:星期; w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六
c: 世纪数-1(四位数年份的前两位数)
y: 年
m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算)
d:日
[ ]代表取整,即只要整数部分。

 

public static int daysOfWeek(int year, int month, int day) {
	if (month < 3) {
		month += 12;
		year -= 1;
	}
    
	int c = year / 100;
	int y = year % 100;
	int w = (y + (y / 4) + (c / 4) - (2 * c) + ((26 * (month + 1)) / 10) + day - 1) % 7;
	return w;
}

  

posted @ 2014-09-15 14:05  水舟陆车  阅读(569)  评论(0编辑  收藏  举报