第一种:直接获取当前日期是星期几
//获取当前日期是星期几
string dt = DateTime.Today.DayOfWeek.ToString();
protected string GetWeek(string dt)
{
string week;
//根据取得的英文单词返回汉字
switch (dt)
{
case "Monday":
week ="星期一";
break ;
case "Tuesday":
week = "星期二";
break;
case "Wednesday":
week = "星期三";
break;
case "Thursday":
week = "星期四";
break;
case "Friday":
week = "星期五";
break;
case "Saturday":
week = "星期六";
break;
case "Sunday":
week = "星期日";
break;
}
}
第二种:DateTime.IsLeapYear(Convert.ToInt32(DateTime.Now.Year.ToString()))判断是否是闰年
DayOfWeek.GetHashCode() 返回0~6,可用来判断是星期几
第三种,计算随便一个日期是星期几
算法如下:
基姆拉尔森计算公式:W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 +1 在公式中d表示日期中的日数,m表示月份数,y表示年数。注意:在公式中有个与其他公式不同的地方:
把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。
#region 根据年月日计算星期几(lblDate.Text=CaculateWeekDay(2010,11,29);)
///
/// 根据年月日计算星期几(lblDate.Text=CaculateWeekDay(2010,11,29);)
///
///年
///月
///日
///
public static 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+1;
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;
}
#endregion