Public Function GetWeek(ByVal changedate As String) As String Dim i As Integer = CType(changedate, DateTime).Date.DayOfWeek Select Case i Case 1 Return "星期一" Case 2 Return "星期二" Case 3 Return "星期三" Case 4 Return "星期四" Case 5 Return "星期五" Case 6 Return "星期六" Case 0 Return "星期日" End Select End Function
//获取
CultureInfo myCI = new CultureInfo("zh-CN");
System.Globalization.Calendar myCal = myCI.Calendar; //日期格式
CalendarWeekRule myCWR = myCI.DateTimeFormat.CalendarWeekRule;
DayOfWeek myFirstDOW = DayOfWeek.Monday;
//本周为第myCal.GetWeekOfYear( DateTime.Now, myCWR, myFirstDOW )周
int thisWeek=myCal.GetWeekOfYear( DateTime.Now, myCWR, myFirstDOW );
Select Case i
Case 1
Return "星期一"
Case 2
Return "星期二"
Case 3
Return "星期三"
Case 4
Return "星期四"
Case 5
Return "星期五"
Case 6
Return "星期六"
Case 0
Return "星期日" End Select
End Function
虽然是可以,但是明显的,这样的算法不严格啊。
一周,是以周一为开始还是以周日为开始呢?
一年中的第一周,是以第一个完整的星期为准,还是以元旦那一天为准呢?(顺便说一下,今年的元旦刚好是周日哦)
你看这样可不可以
string week=Convert.ToDateTime (DateTime.Today .Year +"-1-1").DayOfWeek .ToString ();
int i=1
switch (week)
{
case "Sunday":
i=i+1;
break;
case "Monday":
i=i+2;
break;
...
依此内推 }
(DateTime.Today .DayOfYear-i)/7+2
用switch 还不如我在第一个回帖里面的那样,用枚举方便多了
int i=0;
switch (week)
{
case "Sunday":
i=i+7;
break;
case "Monday":
i=i+6;
break;
case "Tuesday":
i=i+5;
break;
case "Wednesday":
i=i+4;
break;
case "Thursday":
i=i+3;
break;
case "Friday":
i=i+2;
break;
case "Saturday":
i=i+1;
break;
}
MessageBox.Show (Convert.ToString( (DateTime.Today .DayOfYear-i-1)/7+2));