如何获得给定的日期避开假期前的14日内 [英] How to get 14 days prior to the given date avoiding holidays
问题描述
在我的系统,该法案的到期日必须在签发日期后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屋!