根据当前的周别获取这个周别的日期范围(用微软取周别的方法)
例如:2011年25周的日期范围

解决方案 »

  1.   

    取得所在年份 1.1 的 DayOfWeek,据此推算出第二周的范围。
    其余周就可以在这个日期范围上用 AddDays()  (n - 2) * 7 即可。
    最后一周(52周)需要小判断下,以免超过到下一年。
      

  2.   


    void Main()
    {
    DateTime dt=new DateTime(2011,1,1);
    for(int i=0;i<7;i++)
    {
      if(dt.DayOfWeek==DayOfWeek.Monday)
      {
        break;
      }
      else dt=dt.AddDays(1);
    }
    dt=dt.AddDays(25*7);
    if(dt.Year>2011 || dt.AddDays(7).Year>2011)
    throw new Exception("Out of this year!");
    Console.WriteLine("2011年25周的日期范围为:{0}--{1}",dt.ToShortDateString(),dt.AddDays(7).ToShortDateString());
    //2011年25周的日期范围为:6/27/2011--7/4/2011
    }
      

  3.   

    这是我前几天一个项目里用到时写的。给分吧哥们。我这个很实用哟using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;namespace MEETOK.Components
    {
      public class ToolDate
      {  /// <summary>
      /// 周次转化为日期范围
      /// </summary>
      /// <param name="ParmYear">年</param>
      /// <param name="ParmWeek">周次</param>
      /// <returns></returns>
      public static string WeekToDate(int ParmYear, int ParmWeek)
      {  int year = ParmYear, yearStart, yearEnd, monthStart, monthEnd, dayStart, dayEnd, week = ParmWeek, sum = 0;
      int[] days = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
      int i;
      sum += 7 * (week - 1);  //修正当前总天数
      #region
      switch (DateTime.Parse(year + "-1-1").DayOfWeek)
      {
      case DayOfWeek.Tuesday:
      {
      sum += 5;
      break;
      }
      case DayOfWeek.Wednesday:
      {
      sum += 4;
      break;
      }
      case DayOfWeek.Thursday:
      {
      sum += 3;
      break;
      }
      case DayOfWeek.Friday:
      {
      sum += 2;
      break;
      }
      case DayOfWeek.Saturday:
      {
      sum += 1;
      break;
      }
      case DayOfWeek.Sunday:
      {
      //sum;
      break;
      }
      default:
      break;
      }
      #endregion  //判断2月天数
      if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
      {
      days[1] = 29;
      }  //计算出当前是一年的第几天
      for (i = 0; i < days.Length; i++)
      {
      if (sum >= days[i])
      {
      sum -= days[i];
      }
      else
      {
      break;
      }
      }
      #region
      yearStart = year;
      monthStart = i + 1;
      dayStart = sum + 1;  //修改开始日期
      if (dayStart < 1)
      {
      dayStart += days[11];
      monthStart = 12;
      yearStart--;
      }  yearEnd = yearStart;
      monthEnd = monthStart;
      dayEnd = dayStart + 6;
      if (dayEnd > days[monthStart - 1])
      {
      dayEnd -= days[monthStart - 1];
      monthEnd++;
      if (monthEnd > 12)
      {
      monthEnd = 1;
      yearEnd++;
      }
      }
      #endregion
      return yearStart + "." + monthStart + "." + dayStart + "-" + yearEnd + "." + monthEnd + "." + dayEnd;
      }
      /// <summary>
      /// 返回月度范围
      /// </summary>
      /// <param name="ParYear">年</param>
      /// <param name="ParMonth">月</param>
      /// <returns></returns>
      public static string MonthToDate(int ParYear, int ParMonth)
      {
      int[] days = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
      //判断2月天数
      if ((ParYear % 400 == 0) || (ParYear % 4 == 0 && ParYear % 100 != 0))
      {
      days[1] = 29;
      }
      return ParYear + "." + ParMonth + ".1-" + ParYear + "." + ParMonth + "." + days[ParMonth - 1];
      }  /// <summary>
      /// 返回季度范围
      /// </summary>
      /// <param name="ParYear"></param>
      /// <param name="Quarter"></param>
      /// <returns></returns>
      public static string QuarterToDate(string ParYear, int Quarter)
      {
      string[] QuarterToMonth = { ParYear + ".01.01-" + ParYear + ".03.31", ParYear + ".04.01-" + ParYear + ".06.30", ParYear + ".07.01-" + ParYear + ".09.30", ParYear + ".10.01-" + ParYear + ".12.31" };
      return QuarterToMonth[Quarter - 1];
      }
      /// <summary>
      /// 返回上下半年范围
      /// </summary>
      /// <param name="ParYear">年</param>
      /// <param name="upOrDown">上/下 半年 0上半年,1下半年</param>
      /// <returns></returns>
      public static string YearToDate(string ParYear, int upOrDown)
      {
      string[] YearStatus = { ParYear + ".01.01-" + ParYear + ".06.30", ParYear + ".07.01-" + ParYear + ".12.31" };
      return YearStatus[upOrDown];
      }  }
    }