每天都计算一次呗,读出当前日期如果是休息日就放弃,如果不是就在工作日的变量上加1,知道加到五个工作日为止。
简单代码:
private int workDay = 0;//工作日,全程变量
......
//实现日期计算,每天都要判断一次(可以是点击button等方式)
if(workDay == 5)
{
//工作日到了
}
else
{
GetCurrDate();//获得当前日期(自行可以完成)
if(!CheckFreeDate())//CheckFreeDate自己定义的检验是否为休息日
{
workDay++;
}
太具体的就得具体问题具体分析了,我只能提示这些了。

解决方案 »

  1.   

    private bool IsHoliday(DateTime dt)
    {
    bool IsHoliday=false;
    string[] Holiday=new string[2]{"10-1","5-1"};//这里自己定义
    foreach(string i in Holiday)
    {
    if(dt.Month.ToString()+"-"+dt.Day.ToString()==i)
    {
    IsHoliday=true;
    }
    }
    if(dt.DayOfWeek.ToString()=="Saturday"||dt.DayOfWeek.ToString()=="Sunday")
    {
    IsHoliday=true;
    }
    return IsHoliday;
    }
    private DateTime TimeLimit(DateTime startdate,int days)
    {
    DateTime TimeLimit=startdate;
    for(int i=0;i<days;i++)
    {
    if(IsHoliday(startdate.AddDays(i)))
    {
    TimeLimit=TimeLimit.AddDays(1);
    }
    TimeLimit=TimeLimit.AddDays(1);
    }
    return TimeLimit;
    }
    调用:
    private void button1_Click(object sender, System.EventArgs e)
    {
    System.Console.WriteLine(TimeLimit(System.Convert.ToDateTime("2004-10-10"),10));

    }
      

  2.   

    再说明一下:TimeLimit函数的参数为:起始日期和要求完成时限,返回值为要求完工日期。如果限定5个工作日,days输5好了。
      

  3.   

    lxrxyz(无忧十年):
    非常感谢,比较简捷!
      

  4.   

    不好意思,那个函数有点问题,就是顺延的日期没有做是否为节假日的判断
    比如:从2004年10月10日开始,要求为10天。用上面的算出来是23日,看起来好像正确,其实如果20日到23日之间有节假日的话(比如22日为节假日)就不对了,因为函数只判断了10到19号是否为节假日,如果是就顺延,而对顺延出来的日期则没有做节假日判断。
    现在这样改,主要是保证10天的工作日,而前面是保证从开始往后的10天不算节假日。
    private DateTime TimeLimit(DateTime startdate,int days)
    {
       int i=0,j=0;//i表示工作日数,j=0表示从startdate往后找
    while(i<days)//如果不满足总工作日,就一直找下去
    { 
             j++;
    i++;
             //如果这天为节假日,则不算工作日,i--,然后看下一天。
    if(IsHoliday(startdate.AddDays(j)))
    {
    i--;
    }
    }
    return startdate.AddDays(j);
    }