我是使用java.calendar.api的新手.我想指出使用java的某一天的前一个工作日.但是当我使用calendar.api操作日期时条件会继续增加,因为我必须考虑通常的周末和指向上个月,而且我还要考虑我所在地区的地区假期......
例如:说我必须考虑美国假期并指出前一天.
有什么方法可以定义我自己的日历并使用它,以便日期操作感知所有那些通常的变化?
虽然您应该考虑使用Joda Time库,但这里是Java Calendar API的开始:
public Date getPreviousWorkingDay(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int dayOfWeek;
do {
cal.add(Calendar.DAY_OF_MONTH, -1);
dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
} while (dayOfWeek == Calendar.SATURDAY || dayOfWeek == Calendar.SUNDAY);
return cal.getTime();
}
Run Code Online (Sandbox Code Playgroud)
这只考虑周末.您必须添加额外的检查才能处理您考虑假期的日子.例如,你可以添加|| isHoliday(cal)到while条件.然后实现该方法,如:
public boolean isHoliday(Calendar cal) {
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1;
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
if (month == 12 && dayOfMonth == 25) {
return true;
}
// more checks
return false;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10014 次 |
| 最近记录: |