下面的代码计算要添加的工作日数,如果结束日期是节假日/周末,则将日期移到下一天
但此代码假设开始日期不在周末/节假日
我想要一个代码,如果开始日期是周末/假期,它也能工作。
请注意,此代码由发布2013年6月17日,ElenaSofea,但由于我无法对此发表评论,因此将其作为一个新问题提出
参考:如何在跳过周末和其他假期的情况下为日期添加天数
static DateTime CalculateFutureDate(DateTime fromDate, int numberofWorkDays,
ICollection<DateTime> holidays)
{
var futureDate = fromDate;
for (var i = 0; i < numberofWorkDays; i++ )
{
if (futureDate.DayOfWeek == DayOfWeek.Saturday
|| futureDate.DayOfWeek == DayOfWeek.Sunday
|| (holidays != null && holidays.Contains(futureDate)))
{
futureDate = futureDate.AddDays(1);
numberofWorkDays++;
}
else
{
futureDate = futureDate.AddDays(1);
}
}
while(futureDate.DayOfWeek == DayOfWeek.Saturday
|| futureDate.DayOfWeek == DayOfWeek.Sunday
|| (holidays != null && holidays.Contains(futureDate)))
{
futureDate = futureDate.AddDays(1);
}
return futureDate;
}
尝试将日期作为输入传递,以便此方法验证是否为星期六或星期日
public static boolean isValidateSundayorSaturday(String date) throws Exception {
Calendar calendar = Calendar.getInstance();
if (date != null) {
calendar.setTime(getDate(date,null));
int day = calendar.get(Calendar.DAY_OF_WEEK);
if (day == Calendar.SUNDAY || day == Calendar.SATURDAY) {
return true;
}
}
return false;
}
您必须提供所有排除的日期,因为即使在同一个国家,不同地区的日期也不同。
如果你想在这里看到代码,你可以去