每天都计算一次呗,读出当前日期如果是休息日就放弃,如果不是就在工作日的变量上加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++;
}
太具体的就得具体问题具体分析了,我只能提示这些了。
解决方案 »
- C#简单计算器如何实现小数点运算~望各位大虾帮忙解答
- 求解,在试连接数据库例子时老出错,我是新手,求高手帮下
- 怎么把16进制数转化成10进制数
- LINQ to SQL的问题,执行DataContext.SubmitChanges() 数据库并不更新,该如何解决?代码如内:
- 数据库读取图片在网页上显示的问题
- C#、.Net经典面试题目及答案 中的疑问
- winform国际化
- 急!急!急!VB转C#!一个串口程序!
- crystalreport的用法
- 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);
}