Java实现计算当前日期往前推n个工作日代码实现

需求:取当前日期,并往前推n个工作日,返回计算出来的日期(工作日仅去掉周六日,并未考虑春节之类的假期)

折叠复制代码
  1. public class Test {
  2. public static void main(String[] args) {
  3. Date now = DateUtil.parse("2023-7-23 00:00:00", DatePattern.NORM_DATETIME_FORMAT);
  4. System.out.println("当前时间:" + DateUtil.formatDateTime(now));
  5. for (int i = 0; i <= 10; i++) {
  6. Date workDate = getWorkDate(now, i);
  7. System.out.println("减去" + i + "天后时间:" + DateUtil.formatDateTime(workDate));
  8. }
  9. }
  10. public static Date getWorkDate(Date date, int n) {
  11. //实际要扣减的天数(计算出加上周末的时间)
  12. //算出有几周,然后按照7天进行放大
  13. int num = n / 5 * 7;
  14. //根据当前星期几,确定要微调的天数
  15. Calendar instance = Calendar.getInstance();
  16. instance.setTime(date);
  17. int dayOfWeek = instance.get(Calendar.DAY_OF_WEEK);
  18. if (dayOfWeek == 1) {
  19. //周日,额外减2天
  20. num += n % 5 + 2;
  21. } else if (dayOfWeek == 7) {
  22. //周六,额外减1天
  23. num += n % 5 + 1;
  24. } else {
  25. //工作日
  26. num += n % 5;
  27. }
  28. instance.add(Calendar.DATE, -num);
  29. return instance.getTime();
  30. }
  31. }

觉得内容还不错?打赏个钢镚鼓励鼓励!!👍