public int TotalWorkday(DateTime AStart, DateTime AEnd) 
 { 
 TimeSpan vTimeSpan = new TimeSpan(AEnd.Ticks - AStart.Ticks); 
 // 跨度多少个星期,每个星期5个工作日 
int Result = ((int)vTimeSpan.TotalDays / 7) * 5;  // 计算余下的日期中的工作日 
for (int i = 0; i <= vTimeSpan.TotalDays % 7; i++) 
 switch (AStart.AddDays(i).DayOfWeek) 
 { 
 case DayOfWeek.Saturday: 
 case DayOfWeek.Sunday: 
 break; 
 default: 
 Result++; 
 break; 
 } 
 return Result; 
 } /* TotalWorkday */  private void button1_Click(object sender, EventArgs e) 
 { 
 Text = TotalWorkday(new DateTime(2007, 4, 6), 
 new DateTime(2007, 4, 11)).ToString(); 
 } 

解决方案 »

  1.   

    个人思路:
    除7算法假设星期一到星期日分别标识为1-7
    凑够7天-2天为一个周期
    假设开始日期跟结束日期相差为7的整数 Days, 那么之间的间隔时间就为 Days - (2*Days/7)有点复杂的就是怎么去凑一个周期,是开始日期去凑还是结束日期去凑
    或者直接点判断当前日期是周几,然后开始日期向前凑到周几再减去间隔工作日具体到时间的话,不知道能不能直接用时间判断是否满24小时来加减一天如有错误请指正
      

  2.   

      public int TotalWorkday(DateTime AStart, DateTime AEnd)
            {
                int Result = 0;
                DateTime dt = AStart;
                while (dt != AEnd)
                {
                    switch (dt.DayOfWeek)
                    {
                        case DayOfWeek.Monday:
                        case DayOfWeek.Tuesday:
                        case DayOfWeek.Wednesday:
                        case DayOfWeek.Thursday:
                        case DayOfWeek.Friday:
                            Result++;
                            break;
                    }
                    dt = dt.AddDays(1);
                }
                return Result;
            }