Java根据基姆拉尔森公式计算当前日期是星期几
基姆拉尔森计算公式
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来代入公式计算。
public class TestXingqiji { /** * 计算某天星期几 * 在計算此問題上比較常用的還是基姆拉尔森计算公式(具體介紹可在網上搜索) W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 d 天 m 月 y 年 1月2月换算为去年的13、14月计算,也即2007年的1月和2月在公式中體現為2006年的13和14月, 雖然與實際不符但這是邏輯的需要。 * @param y 年 * @param m 月 * @param d 日 * @return */ public static String suan(int y,int m,int d) { if(m==1) {m=13;y--;} if(m==2) {m=14;y--;} int week=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7; String weekstr=""; switch(week) { case 0: weekstr="一"; break; case 1: weekstr="二"; break; case 2: weekstr="三"; break; case 3: weekstr="四"; break; case 4: weekstr="五"; break; case 5: weekstr="六"; break; case 6: weekstr="日"; break; } return weekstr; } public static void main(String[] args) { System.out.print(suan(2012,1,31)); } }