计算某天是星期几的算法

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

下面是 C#的代码实现

        /// 计算输入日期的星期
        /// </summary>
        /// <param name="year">年份,yyyy格式 如:2009</param>
        /// <param name="month">月份:1到12之间的整数</param>
        /// <param name="day">日期:1到31之间的整数</param>
        /// <returns>星期数,1至7之间 1代表星期一,7代表星期天</returns>
        int Week(int year, int month, int day) {

            if (month == 1 || month == 2) {
                month += 12;
                year -= 1;
            }

            int week = (day + 2 * month  + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7;
            return (week + 1);
        }