项目中有节假日顺延的需求且服务器在内网,无法使用第三方api只能自己写一个获取节假日程序,但是节假日每年是国家发布的,所以无法提前知道是哪一天,所以该功能需要人工维护节日,创建节假日表,先将明年的周六周日初始化值节假日表,再根据国家发布节假日进行维护。
目标
我们的目标是:
- 获取全年所有的周六和周日。
- 创建节假日表,初始化节假日数据。
- 人工维护节假日数据,并将国家发布的节假日添加到表中。
获取全年周末的示例代码
首先,我们编写一个 Java 程序来获取指定年份的所有周末
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
public class WeekendFetcher {
public static void main(String[] args) {
int year = 2024; // 设定要查询的年份
List<LocalDate> weekends = getWeekendsOfYear(year);
// 打印所有的周末日期
for (LocalDate date : weekends) {
System.out.println(date);
}
}
public static List<LocalDate> getWeekendsOfYear(int year) {
List<LocalDate> weekends = new ArrayList<>();
LocalDate startDate = LocalDate.of(year, 1, 1);
LocalDate endDate = LocalDate.of(year, 12, 31);
// 遍历从年初到年末的每一天
LocalDate currentDate = startDate;
while (!currentDate.isAfter(endDate)) {
DayOfWeek dayOfWeek = currentDate.getDayOfWeek();
if (dayOfWeek == DayOfWeek.SATURDAY || dayOfWeek == DayOfWeek.SUNDAY) {
weekends.add(currentDate);
}
currentDate = currentDate.plusDays(1);
}
return weekends;
}
}
代码说明
-
导入相关的类:
java.time.LocalDate
:用于处理日期。java.time.DayOfWeek
:用于获取星期几。java.util.ArrayList
:用于存储结果。
-
定义
getWeekendsOfYear
方法:- 该方法接受一个年份,创建该年份的起始日期和结束日期。
- 使用
while
循环遍历从年初到年末的每一天。 - 使用
getDayOfWeek()
方法判断当前日期是否是周六或周日。 - 如果是,将日期添加到
weekends
列表中。
-
打印结果:
- 在
main
方法中调用getWeekendsOfYear
方法,并打印所有的周末日期。
- 在
节假日数据维护
在你的项目中,可能会有节假日顺延的需求,而由于服务器在内网,无法使用第三方 API,你需要手动维护节假日数据。可以采取以下步骤:
-
周末初始化代码:
- 使用上述代码获取全年的周六和周日,并将其插入到节假日表中。
-
维护节假日:
- 定期根据国家发布的节假日更新你的节假日表。
总结
在 Java 中获取全年周六和周日是一个简单的任务,但对于节假日数据的维护则涉及到更多的细节和人工操作。通过创建节假日表并初始化为周末日期,然后根据国家发布的节假日进行更新,你可以有效地管理节假日数据。希望这个示例对你有所帮助!
你可以将这篇文章发布到你的博客上,为其他开发者提供一个完整的解决方案,同时也帮助他们在项目中处理节假日数据。如果需要他java工具类可以私信我(完全免费,人人为我,我为人人)