您的位置:首页 > 职场人生

黑马程序员-类 基姆拉尔森

2014-05-05 19:25 197 查看
----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
百度百科上关于基姆拉尔森计算公式只给出了java算法,自己整理了下C#的算法。。

算法如下:
基姆拉尔森计算公式
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1) mod 7
在公式中d表示日期中的日数,m表示月份数,y表示年数。
注意:在公式中有个与其他公式不同的地方:
把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。

public class b
        {
            int y, m, d;
            public b(int y, int m, int d)
            {
                this.y = y;
                this.m = m;
                this.d = d;

            }
          public string CaculateWeekDay(int y, int m, int d)
            {
                if (m == 1 || m == 2)
                {
                    m += 12;
                    y--;         //把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。
                }
                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;
            }
        }
        

        private void button1_Click(object sender, EventArgs e)
        {
    
          int   y = Convert.ToInt32(textBox1.Text);
          int m = Convert.ToInt32(textBox2.Text);
          int d = Convert.ToInt32(textBox3.Text);
          b a = new b(y,m,d);
          label1.Text = a.CaculateWeekDay(y, m, d);
 

        }
    }
ok。。。就是这样

----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------详细请查看:www.itheima.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: