背景
项目中有一个计算工作日的需求。
网上也没找到合适的。
所以决定动手写一个。
思路
根据国务院的放假安排维护一张放假表
然后就可以计算某个日期是不是工作日,和从某天计算向前(向后)多少天以后的工作日
为了维护方便,使用fullcalendar开发了一个休息日标记的页面
点击标记节假日,再点击取消标记
通过这个页面我们可以将今年的所有节假日(包括周末)都存到数据库。
新版的界面
计算特定日子前后的工作日
比如说今天之后5个工作日是哪天
思路很简单,请看代码
public String afterDays(String date, Integer days) throws ParseException {
// 控制向前还是向后
boolean position = days > 0 ? true : false;
int size = Math.abs(days);
while (size > 0) {
if (position) {
date = DateUtils.plusDays(date, 1);
} else {
date = DateUtils.plusDays(date, -1);
}
// 是工作日
if (isWorkDay(date)) {
size--;
}
}
return date;
}
试验一下
项目已经托管在github上
地址
https://github.com/peer44/workday
参考文献
感谢这两位老铁,参考添加了农历