遇到一個需求:計算某日期過了 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 只能靠人工維護
畢竟國定假日是台灣每年推出的
甚至各單位都不同
沒辦法一套打天下