Java 計算日期要周休二日

遇到一個需求:計算某日期過了 n 天後的日期
這原生 API 就能解決的

calendar.add(Calendar.DATE, days);

但是還有一個條件:週六週日要跳過
因此設計以下方法

public Calendar addDays(Calendar calendar, int days, boolean workday) {
    if (workday) {
        for (int i = 0; i < days; i++) {
            calendar.add(Calendar.DATE, 1);
            if(calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || 
               calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
                i--;
            }
        }
    } else {
        calendar.add(Calendar.DATE, days);
    }
    return calendar;
}

其實做法很單純
就是一天一天加
判斷若該休就再循環一次

但以上的程式很死
正確來說應該是要有一個休息日的 list
只要日期符合就跳過
這樣才能真的實現工作天日曆天的區別
當然這個 list 只能靠人工維護
畢竟國定假日是台灣每年推出的
甚至各單位都不同
沒辦法一套打天下