Java双周薪资日期计算器:需排除周六周日的代码修改求助
解决薪资发放日期(排除周末)的Java实现方案
核心思路
- 采用Java 8及以上版本自带的
java.time工具类处理日期,替代老旧的Date/Calendar,API更直观且线程安全 - 计算出目标日期后,判断是否为周六或周日,若是则自动顺延至下周一
- 依次计算加15、30、45、60天的日期,逐个处理周末问题
完整代码示例
import java.time.DayOfWeek; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; import java.util.Scanner; public class SalaryDateCalculator { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // 接收用户输入日期 System.out.print("请输入起始日期(格式:yyyy-MM-dd):"); String inputDateStr = scanner.nextLine(); try { LocalDate startDate = LocalDate.parse(inputDateStr, dateFormatter); // 定义需要增加的天数数组 int[] addDaysArray = {15, 30, 45, 60}; System.out.println("薪资发放日期(排除周末):"); for (int days : addDaysArray) { LocalDate targetDate = startDate.plusDays(days); // 调整周末日期到下周一 LocalDate payDate = adjustWeekend(targetDate); System.out.printf("加%d天:%s%n", days, payDate.format(dateFormatter)); } } catch (DateTimeParseException e) { System.out.println("输入日期格式错误,请按照yyyy-MM-dd格式输入。"); } finally { scanner.close(); } } // 调整周末日期至下周一 private static LocalDate adjustWeekend(LocalDate date) { DayOfWeek dayOfWeek = date.getDayOfWeek(); if (dayOfWeek == DayOfWeek.SATURDAY) { return date.plusDays(2); } else if (dayOfWeek == DayOfWeek.SUNDAY) { return date.plusDays(1); } return date; } }
代码说明
- 日期解析与格式化:用
DateTimeFormatter指定输入输出的日期格式,同时捕获DateTimeParseException处理用户输入格式错误的情况 - 周末调整逻辑:
adjustWeekend方法判断日期的星期属性,周六加2天跳转至周一,周日加1天跳转至周一,工作日直接返回原日期 - 循环计算薪资日期:通过数组遍历需要增加的天数,逐个计算并调整,输出最终合规的薪资发放日期
运行说明
- 在IntelliJ IDEA中新建Java类,粘贴上述代码
- 运行程序后,按照提示输入格式为
yyyy-MM-dd的起始日期(例如2024-05-20) - 程序会输出调整后的4个薪资发放日期
内容的提问来源于stack exchange,提问作者Avighna Guha
相关产品推荐
相关产品推荐

