如何获得给定的日期避开假期前的14日内 [英] How to get 14 days prior to the given date avoiding holidays

查看:124
本文介绍了如何获得给定的日期避开假期前的14日内的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的系统,该法案的到期日必须在签发日期后14天内。结果
我有到期日和我想知道发行日​​期间。结果
我有计算:结果

 发行日期= 14天前到期日

14天必须是工作日,节假日不结果
假期存储在一个表tblHolidayMaster这样,搜索





日期                    描述:
结果2012/05/13 NBSP;         母亲的
节结果2012/6月2日          Saturnday结果2012/12月25日  &NBSP ;      圣诞节





如何计算发行日期间避免假期?结果
谢谢所有您的利益和答复的。


解决方案

我会计算使用类似下面的一个函数(我使用)

 公共静态的DateTime AddBusinessDays(DateTime的日期,INT天)日期
{
如果(天== 0)返回日期;

如果(date.DayOfWeek == DayOfWeek.Saturday)
{
日期= date.AddDays(2);
天 - = 1;
}
,否则如果(date.DayOfWeek == DayOfWeek.Sunday)
{
日期= date.AddDays(1);
天 - = 1;
}



日期= date.AddDays(天/ 5 * 7);
INT extraDays =天数5%;

如果((int)的date.DayOfWeek + extraDays→5)
{
extraDays + = 2;
}

INT extraDaysForHolidays = -1;
//加载从DB假期到列表
名单,LT; DateTime的>日期= GetHolidays();

而(extraDaysForHolidays!= 0)
{

变种天= dates.Where(X =&X的催化剂> =日期和放大器;&放大器; X&下= date.AddDays(extraDays))计数。
extraDaysForHolidays =天;
extraDays + =天;
}


返回date.AddDays(extraDays);



}



还没有测试AST部分,做假期


In my system ,the due date of the bill must be 14 days after the issued date.
I have due date and I want to know issued date .
I have to calculate :

issued date = 14 days prior to the due date

but 14 days must be business days ,not holidays.
Holidays is stored in a table 'tblHolidayMaster' like this,

Date                   Description
2012/05/13         Mother's Day
2012/06/02         Saturnday
2012/12/25         Christmas

How can I calculate the issued date avoiding holidays?
Thank you for all of your interests and replies.

解决方案

I would calculate the Date using a function like the one below (which i use)

public static DateTime AddBusinessDays(DateTime date, int days)
 {
    if (days == 0) return date;

   if (date.DayOfWeek == DayOfWeek.Saturday)
   {
    date = date.AddDays(2);
    days -= 1;
  }
  else if (date.DayOfWeek == DayOfWeek.Sunday)
  {
    date = date.AddDays(1);
    days -= 1;
  } 



 date = date.AddDays(days / 5 * 7);
 int extraDays = days % 5;

 if ((int)date.DayOfWeek + extraDays > 5)
 {
    extraDays += 2;
 }

int extraDaysForHolidays =-1;
//Load holidays from DB into list
List<DateTime> dates = GetHolidays();

while(extraDaysForHolidays !=0)
{

 var days =  dates.Where(x => x >= date  && x <= date.AddDays(extraDays)).Count;
 extraDaysForHolidays =days;
 extraDays+=days;  
}


return date.AddDays(extraDays);

}

Haven't tested the ast section that does the holidays

这篇关于如何获得给定的日期避开假期前的14日内的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆