每天都计算一次呗,读出当前日期如果是休息日就放弃,如果不是就在工作日的变量上加1,知道加到五个工作日为止。
简单代码:
private int workDay = 0;//工作日,全程变量
......
//实现日期计算,每天都要判断一次(可以是点击button等方式)
if(workDay == 5)
{
//工作日到了
}
else
{
GetCurrDate();//获得当前日期(自行可以完成)
if(!CheckFreeDate())//CheckFreeDate自己定义的检验是否为休息日
{
workDay++;
}
太具体的就得具体问题具体分析了,我只能提示这些了。
简单代码:
private int workDay = 0;//工作日,全程变量
......
//实现日期计算,每天都要判断一次(可以是点击button等方式)
if(workDay == 5)
{
//工作日到了
}
else
{
GetCurrDate();//获得当前日期(自行可以完成)
if(!CheckFreeDate())//CheckFreeDate自己定义的检验是否为休息日
{
workDay++;
}
太具体的就得具体问题具体分析了,我只能提示这些了。
解决方案 »
- WPF的用户控件如何访问主窗体的控件?求高手!
- Reporting Services做报表的问题
- 求一个ASP.NET(C#)简单论坛的100%源代码
- 怎么用水晶报表在同一行打印多条记录
- 【新年新问题】关于WebService端二进制序列化DataSet在客户端反序列化失败的问题!!!
- UTF7编码的转换问题 !!!
- 我的机器IIS服务已启动,但是Vs.net打开项目的时候就是打不开,请教。
- 请教下PANEL内放置调用FORM缩放的问题
- 怎么在一个DataTable的顶部上再加上一行数据!!!???在线等!非常急用!请朋友们帮忙!
- 各位路过大虾~~~~~~~~~~~~~~给推荐几本关于c#比较经典的书籍好吗~?
- 请教C#中的System.Drawing.Icon类对象怎么存文件名?
- ***高手求助了!本人在用ADO.net连接Oracle8.0数据库时出现错误提示,向各位高手求助!谢谢了!!!***
{
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));
}
非常感谢,比较简捷!
比如:从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);
}