Java获取一段时间内中国的工作日
介绍
在开发过程中,我们经常需要获取一段时间内的工作日。对于中国来说,工作日是指周一到周五,不包括法定假日。本文将介绍如何使用Java来实现获取一段时间内中国的工作日。
流程
下面是实现该功能的流程图:
erDiagram
开始 --> 获取起始日期和结束日期
获取起始日期和结束日期 --> 获取两个日期之间的所有日期
获取两个日期之间的所有日期 --> 循环判断每个日期是否为工作日
循环判断每个日期是否为工作日 --> 输出结果
输出结果 --> 结束
代码实现
获取起始日期和结束日期
首先,我们需要获取用户输入的起始日期和结束日期。可以使用java.util.Scanner
类来实现:
Scanner scanner = new Scanner(System.in);
System.out.print("请输入起始日期(yyyy-MM-dd):");
String startDateStr = scanner.nextLine();
System.out.print("请输入结束日期(yyyy-MM-dd):");
String endDateStr = scanner.nextLine();
获取两个日期之间的所有日期
接下来,我们需要获取起始日期和结束日期之间的所有日期。可以使用java.time.LocalDate
类和java.time.temporal.ChronoUnit
枚举来实现:
LocalDate startDate = LocalDate.parse(startDateStr);
LocalDate endDate = LocalDate.parse(endDateStr);
List<LocalDate> allDates = new ArrayList<>();
long daysBetween = ChronoUnit.DAYS.between(startDate, endDate);
for (int i = 0; i <= daysBetween; i++) {
allDates.add(startDate.plusDays(i));
}
循环判断每个日期是否为工作日
然后,我们需要循环判断每个日期是否为工作日。可以使用java.time.DayOfWeek
枚举来判断日期的星期几,进而判断是否为工作日:
List<LocalDate> workDays = new ArrayList<>();
for (LocalDate date : allDates) {
if (date.getDayOfWeek() != DayOfWeek.SATURDAY && date.getDayOfWeek() != DayOfWeek.SUNDAY) {
workDays.add(date);
}
}
输出结果
最后,我们需要输出结果,即获取到的工作日列表。可以使用java.util.stream
流操作来实现:
System.out.println("工作日列表:");
workDays.stream()
.map(LocalDate::toString)
.forEach(System.out::println);
完整代码
下面是完整的代码:
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class WorkdayCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入起始日期(yyyy-MM-dd):");
String startDateStr = scanner.nextLine();
System.out.print("请输入结束日期(yyyy-MM-dd):");
String endDateStr = scanner.nextLine();
LocalDate startDate = LocalDate.parse(startDateStr);
LocalDate endDate = LocalDate.parse(endDateStr);
List<LocalDate> allDates = new ArrayList<>();
long daysBetween = ChronoUnit.DAYS.between(startDate, endDate);
for (int i = 0; i <= daysBetween; i++) {
allDates.add(startDate.plusDays(i));
}
List<LocalDate> workDays = new ArrayList<>();
for (LocalDate date : allDates) {
if (date.getDayOfWeek() != DayOfWeek.SATURDAY && date.getDayOfWeek() != DayOfWeek.SUNDAY) {
workDays.add(date);
}
}
System.out.println("工作日列表:");
workDays.stream()
.map(LocalDate::toString)
.forEach(System.out::println);
}
}
总结
本文介绍了如何使用Java获取一段时间内中国的工作日。通过获取起始日期和结束日期,然后获取两个日期之间的所有日期,循环判断每个日期是否为工作日,最后输出结果,我们可以方便地获得所需的工作日列表。希望本文对刚入行的小白能够有所帮助。