如何在跳过周末和其他假期的情况下将天数添加到日期中,并且开始日期是周末或假期

本文关键字:假期 周末 日期 添加 开始 其他 情况下 | 更新日期: 2023-09-27 17:58:10

下面的代码计算要添加的工作日数,如果结束日期是节假日/周末,则将日期移到下一天
但此代码假设开始日期不在周末/节假日

我想要一个代码,如果开始日期是周末/假期,它也能工作。

请注意,此代码由发布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;
    }

您必须提供所有排除的日期,因为即使在同一个国家,不同地区的日期也不同。

如果你想在这里看到代码,你可以去