菜鸟问题,大家一起帮忙看看,谢谢拉~~~~
请问各位,如何编写一个函数,求得具体一天是星期几? 
 比如:2001年9月18日是星期几?   
 另外还有个问题,.net的帮助文件里,我们经常看到一些已经定义好的函数,我们直接调用就可以了,那是否可以看到函数的原代码?还是只能调用,看不到原代码呢?
------解决方案--------------------先要知道最早的一天是星期几 
 例如从2000年开始,那么就要知道2000年1月1日是星期几 
 之后要算出具体那一天离2000年1月1日相差多少天,再将这个天数余7取模 
 最后将2000年1月1日的星期几加上余下的模 
 如2000年1月1日是星期一,余下的模是1,那么具体那一天就是星期二(1+1) 
  2000年1月1日是星期六,余下的模是6,那么具体那一天就是星期五(6+6-7)     
 以上仅做参考
------解决方案--------------------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));   
 输出的结果是:星期四   
------解决方案--------------------对于何一天是星期几算法的程序时间都比较简单,而在我自己的实际项目中采用的是基姆拉尔森计算公式,所以我在这里给出基姆拉尔森计算公式的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: