VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > C#教程 >
  • c#时间函数扩展计算第几周和周几起止日期

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
 

2008-07-08 15:30
private int DatePart(System.DateTime dt)
{
  int weeknow = Convert.ToInt32(dt.DayOfWeek);//今天星期几
  int daydiff = (-1) * (weeknow+1);//今日与上周末的天数差
  int days = System.DateTime.Now.AddDays(daydiff).DayOfYear;//上周末是本年第几天
  int weeks = days/7;
  if(days%7 != 0)
{
   weeks++;
  }
  //此时,weeks为上周是本年的第几周
  return (weeks+1);
  }


//本周起止日期

private string WeekRange(System.DateTime dt)
{
  int weeknow = Convert.ToInt32(dt.DayOfWeek);
  int daydiff = (-1) * weeknow;
  int dayadd = 6-weeknow;
  string dateBegin = System.DateTime.Now.AddDays(daydiff).Date.ToString("MM月dd日");
  string dateEnd = System.DateTime.Now.AddDays(dayadd).Date.ToString("MM月dd日");
  return dateBegin + " - " +dateEnd;
  }

//计算第几周(重新修改后)
public int GetWeekOfCurrDate(DateTime dt)
    {
      int Week = 1;
      int nYear = dt.Year;
       System.DateTime FirstDayInYear = new DateTime(nYear, 1, 1);
       System.DateTime LastDayInYear = new DateTime(nYear, 12, 31);
      int DaysOfYear = Convert.ToInt32(LastDayInYear.DayOfYear);
      int WeekNow = Convert.ToInt32(FirstDayInYear.DayOfWeek) - 1;
      if (WeekNow < 0) WeekNow = 6;
      int DayAdd = 6 - WeekNow;
       System.DateTime BeginDayOfWeek = new DateTime(nYear, 1, 1);
       System.DateTime EndDayOfWeek = BeginDayOfWeek.AddDays(DayAdd);
       Week = 2;
      for (int i = DayAdd + 1; i <= DaysOfYear; i++)
      {
         BeginDayOfWeek = FirstDayInYear.AddDays(i);
        if (i + 6 > DaysOfYear)
        {
           EndDayOfWeek = BeginDayOfWeek.AddDays(DaysOfYear - i - 1);
         }
        else
        {
           EndDayOfWeek = BeginDayOfWeek.AddDays(6);
         }

        if (dt.Month == EndDayOfWeek.Month && dt.Day <= EndDayOfWeek.Day)
        {
          break;
         }
         Week++;
         i = i + 6;
       }
      return Week;
     }



相关教程