找到下一个工作日

Rab*_*bin 4 java sql sql-server-2008

假设我在我的数据库中存储了一堆假期.

我需要做的是找出下一个工作日,不包括星期六和数据库中定义的公众假期.

例如.

假设今天是2月15日星期五,17日和18日是公共假日,在数据库中定义为datetime.所以现在当我按下下一个工作日的按钮时,应该会在2月19日返回.

获得它的最有效方法是哪种?

Vaa*_*ndu 10

最简单的.

第1步:从数据库中获取假期并格式化为您的格式,并将其保存在 List<String>

第2步:创建一个添加日期的方法.

public static Date addDays(Date d, int days) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(d);
    cal.add(Calendar.DATE, days);
    return cal.getTime();
}
Run Code Online (Sandbox Code Playgroud)

第3步:创建一个查找假期的方法.

public boolean isBankHoliday(java.util.Date d) {
    Calendar c = new GregorianCalendar();
    c.setTime(d);
    if((Calendar.SATURDAY == c.get(c.DAY_OF_WEEK)) || (Calendar.SUNDAY == c.get(c.DAY_OF_WEEK)) || bankHolidays.contains(dString)) {
        return (true);
    } else {
        return false;
    }
} 
Run Code Online (Sandbox Code Playgroud)

第4步:获取输入日期.检查银行假日,循环直到找到工作日.

while (isBankHoliday(myDate)) {
    myDate = addDays(myDate, 1);
}
Run Code Online (Sandbox Code Playgroud)