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: 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 ------------------------ 我是倒的别人的贴,我很诚实的
2..nnet不开源,只能看到原型!
想知道是怎么算出来的呀
属性值
一个 DayOfWeek 枚举常数,它指示星期几。该属性值的范围从零(表示星期日)到六(表示星期六)。 你新建一个方法,这个方法接收一个字符串参数,
然后在方法体内把这个字符串实例化一个DateTime类,然后调用这个类的DayOfWeek属性,
这个属性就能返回星期几,然后把这个返回值当作你的方法的返回值就可以了。
{
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);
}
}
{
// 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));输出的结果是:星期四
// 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
------------------------
我是倒的别人的贴,我很诚实的