怎么知道一个日期是一年中的第几周?

解决方案 »

  1.   

    using System.Globalization;.......

    //获取
    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 );
      

  2.   

    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
      

  3.   

    DateTime.Today .DayOfYear/7+1!!!楼上高
      

  4.   

    DateTime.Today .DayOfYear/7+1
    虽然是可以,但是明显的,这样的算法不严格啊。
    一周,是以周一为开始还是以周日为开始呢?
    一年中的第一周,是以第一个完整的星期为准,还是以元旦那一天为准呢?(顺便说一下,今年的元旦刚好是周日哦)
      

  5.   

    兄弟,有点复要,想简单了
    你看这样可不可以
    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
      

  6.   


    用switch 还不如我在第一个回帖里面的那样,用枚举方便多了
      

  7.   

    string week=Convert.ToDateTime (DateTime.Today .Year +"-1-1").DayOfWeek .ToString ();
    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));