1.在一个textbox里面输入一个年份,例如:2007
2.然后列出每个月有多少天是非星期六日,有多少天是星期六,有多少天是星期日?能例子么?谢谢谢谢谢谢!!!

解决方案 »

  1.   

    int y = 2007;
    int i=0,j=0,k=0;for(DateTime dt = new DateTime(y,1,1);dt.CompareTo(new DateTime(y+1,1,1))<0;dt.AddDays(1))
    {
        if (dt.DayOfWeek==DayOfWeek.Saturday)
        {
            i++;//星期六天数
        }
        else if (dt.DayOfWeek==DayOfWeek.Sunday)
        {
            j++;//星期天天数
        }
        else
        {
            k++;//其他天数
        }
    }
      

  2.   

    有两个关键点:1、某年有多少天 2、每一年的第一天是星期几
    第一个关键点参照:
    DateTime a = "2007-1-1";
    DateTime b = "2008-1-1";
    TimeSpan c = b-a;
    double d = c.TotalDays - 1;//d就是天数。
    第二个关键点参照
    C#实现的根据年月日计算星期几的函数 方案
    算法如下: 
    基姆拉尔森计算公式
    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来代入公式计算。代码如下:
     //y-年,m-月,d-日期
      string CaculateWeekDay(int y,int m, int d)
      {
      if(m==1) m=13;
      if(m==2) m=14;
            int week=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7; 
      string weekstr="";
       switch(week)
       {
        case 1: weekstr="星期一"; break;
        case 2: weekstr="星期二"; break;
        case 3: weekstr="星期三"; break;
        case 4: weekstr="星期四"; break;
        case 5: weekstr="星期五"; break;
        case 6: weekstr="星期六"; break;
        case 7: weekstr="星期日"; break;
       }          return weekstr; 
      }调用方法:
    Label2.Text=CaculateWeekDay(2007,1,1);剩下的自己去组织吧
      

  3.   

    还是按楼主要求写完整吧int y = int.Parse(textBox1.Text);
    int i=0,j=0,k=0;for(DateTime dt = new DateTime(y,1,1);dt.CompareTo(new DateTime(y+1,1,1))<0;dt.AddDays(1))
    {
        if (dt.DayOfWeek==DayOfWeek.Saturday)
        {
            i++;//星期六天数
        }
        else if (dt.DayOfWeek==DayOfWeek.Sunday)
        {
            j++;//星期天天数
        }
        else
        {
            k++;//其他天数
        }
    }
    Response.Write(y.ToString()+"年有"+i.ToString()+"个星期六<BR>");
    Response.Write(y.ToString()+"年有"+j.ToString()+"个星期日<BR>");
    Response.Write(y.ToString()+"年有"+k.ToString()+"个非星期六日");
      

  4.   

    二楼的方法好,寒自己一下,居然没想到CompareTo
      

  5.   

    sorry,没看清题,重新改了下int y = int.Parse(textBox1.Text);for(int m=1;m<=12;m++)
    {
        DateTime dt0 = new DateTime(y,m,1);
        int i=0,j=0,k=0;
        for(DateTime dt = dt0;dt.CompareTo(dt0.AddMonth(1))<0;dt.AddDays(1))
        {
            if (dt.DayOfWeek==DayOfWeek.Saturday)
            {
                i++;//星期六天数
            }
            else if (dt.DayOfWeek==DayOfWeek.Sunday)
            {
                j++;//星期天天数
            }
            else
            {
                k++;//其他天数
            }
        }
        Response.Write(y.ToString()+"年"+m.ToString()+"月有"+i.ToString()+"个星期六<BR>");
        Response.Write(y.ToString()+"年"+m.ToString()+"月有"+j.ToString()+"个星期日<BR>");
        Response.Write(y.ToString()+"年"+m.ToString()+"月有"+k.ToString()+"个非星期六日");
    }
      

  6.   

    输出非星期六日少了个<BR>