请问各位,如何编写一个函数,求得具体一天是星期几?
比如:2001年9月18日是星期几?另外还有个问题,.net的帮助文件里,我们经常看到一些已经定义好的函数,我们直接调用就可以了,那是否可以看到函数的原代码?还是只能调用,看不到原代码呢?

解决方案 »

  1.   

    1.DateTime.DayOfWeek 
    2..nnet不开源,只能看到原型!
      

  2.   

    能不能编一个具体的函数?我不想用DateTime.DayOfWeek 
    想知道是怎么算出来的呀
      

  3.   

    public DayOfWeek DayOfWeek { get; }
     
    属性值
    一个 DayOfWeek 枚举常数,它指示星期几。该属性值的范围从零(表示星期日)到六(表示星期六)。 你新建一个方法,这个方法接收一个字符串参数,
    然后在方法体内把这个字符串实例化一个DateTime类,然后调用这个类的DayOfWeek属性,
    这个属性就能返回星期几,然后把这个返回值当作你的方法的返回值就可以了。
      

  4.   

    for example:class Test
        {
            public static void Main()
            {
                string str = "2001年9月18日";
                Console.WriteLine(EnglistFormat(str));//Tuesday
                Console.WriteLine(ChineseFormat(str));//星期二
            }
            static string EnglistFormat(string str)
            {
                DateTime dt = Convert.ToDateTime(str);
                return dt.DayOfWeek.ToString();
            }
            static string ChineseFormat(string str)
            {
                DateTime dt = Convert.ToDateTime(str);
                return dt.GetDateTimeFormats('D')[2].Substring(0, 3);
            }
            
        }
      

  5.   

    private string date(int year,int month,int day)
    {
    // 1980 1 1 2
    int days=0,k=0,i,z;
    int years=year-1753;
    string week="";
    for(i=1753;i<=year;i++)
    {
    if(i%4==0&&i%100!=0||i%400==0)
    {
    k++;
    }
    }
    days+=years*365+k;

    if(year%4==0&&year%100!=0||year%400==0)
    {
    switch(month)
    {
    case 1:break;
    case 2:days+=31;break;
    case 3:days+=31+28;break;
    case 4:days+=31+28+31;break;
    case 5:days+=31+28+31+30;break;
    case 6:days+=31+28+31+30+31;break;
    case 7:days+=31+28+31+30+31+30;break;
    case 8:days+=31+28+31+30+31+30+31;break;
    case 9:days+=31+28+31+30+31+30+31+31;break;
    case 10:days+=31+28+31+30+31+30+31+31+30;break;
    case 11:days+=31+28+31+30+31+30+31+31+30+31;break;
    case 12:days+=31+28+31+30+31+30+31+31+30+31+30;break;
    }
    }
    else 
    {
    switch(month)
    {
    case 1:break;
    case 2:days+=31;break;
    case 3:days+=31+28;break;
    case 4:days+=31+28+31;break;
    case 5:days+=31+28+31+30;break;
    case 6:days+=31+28+31+30+31;break;
    case 7:days+=31+28+31+30+31+30;break;
    case 8:days+=31+28+31+30+31+30+31;break;
    case 9:days+=31+28+31+30+31+30+31+31;break;
    case 10:days+=31+28+31+30+31+30+31+31+30;break;
    case 11:days+=31+28+31+30+31+30+31+31+30+31;break;
    case 12:days+=31+28+31+30+31+30+31+31+30+31+30;break;
    }
    }
    days+=day;
    z=1+days%7;
    if(z>=7)
    {
    z=z-7;
    }
    switch(z)
    {
    case 0:week="星期六";break;
    case 1:week="星期天";break;
    case 2:week="星期一";break;
    case 3:week="星期二";break;
    case 4:week="星期三";break;
    case 5:week="星期四";break;
    case 6:week="星期五";break;
    }
    return week;
    }MessageBox.Show(date(2007,1,25));输出的结果是:星期四
      

  6.   

    对于何一天是星期几算法的程序时间都比较简单,而在我自己的实际项目中采用的是基姆拉尔森计算公式,所以我在这里给出基姆拉尔森计算公式的C#的实现:// ************************************************
     //  str_week
      //
      /// <summary>
      /// 返回谋年某月任意一天是星期几的描述   /// </summary>//y:年,m:月,d:日。在参数都只传入相应的整数
        // ********************************************/private string str_week(int y,int m,int d){  
       int a=7; // 用来保存计算得到的星期几的整数
       string str_date="";
       if((m==1)||(m==2))//如果是一月或二月进行换算
       {
        m+=12;
        y--;
       }
       a=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;   //得到的星期几的整数
       switch (a){ 
        case 0:
         str_date="星期一";
         break;
        case 1:
         str_date="星期二";
         break;
        case 2:
         str_date="星期三";
         break;
        case 3:
         str_date="星期四";
         break;
        case 4:
         str_date="星期五";
         break;
        case 5:
         str_date="星期六";
         break;
        case 6:
         str_date="星期日";
         break;
       }
       return str_date; 
    }
    http://www.cnblogs.com/yice/archive/2005/09/02/228881.aspx
    ------------------------
    我是倒的别人的贴,我很诚实的