java处理假日顺延需求

项目中有节假日顺延的需求且服务器在内网,无法使用第三方api只能自己写一个获取节假日程序,但是节假日每年是国家发布的,所以无法提前知道是哪一天,所以该功能需要人工维护节日,创建节假日表,先将明年的周六周日初始化值节假日表,再根据国家发布节假日进行维护。

目标

我们的目标是:

  1. 获取全年所有的周六和周日
  2. 创建节假日表,初始化节假日数据。
  3. 人工维护节假日数据,并将国家发布的节假日添加到表中。

获取全年周末的示例代码

首先,我们编写一个 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;
    }
}

代码说明

  1. 导入相关的类

    • java.time.LocalDate:用于处理日期。
    • java.time.DayOfWeek:用于获取星期几。
    • java.util.ArrayList:用于存储结果。
  2. 定义 getWeekendsOfYear 方法

    • 该方法接受一个年份,创建该年份的起始日期和结束日期。
    • 使用 while 循环遍历从年初到年末的每一天。
    • 使用 getDayOfWeek() 方法判断当前日期是否是周六或周日。
    • 如果是,将日期添加到 weekends 列表中。
  3. 打印结果

    • main 方法中调用 getWeekendsOfYear 方法,并打印所有的周末日期。

节假日数据维护

在你的项目中,可能会有节假日顺延的需求,而由于服务器在内网,无法使用第三方 API,你需要手动维护节假日数据。可以采取以下步骤:

  1. 周末初始化代码

    • 使用上述代码获取全年的周六和周日,并将其插入到节假日表中。
  2. 维护节假日

    • 定期根据国家发布的节假日更新你的节假日表。

总结

在 Java 中获取全年周六和周日是一个简单的任务,但对于节假日数据的维护则涉及到更多的细节和人工操作。通过创建节假日表并初始化为周末日期,然后根据国家发布的节假日进行更新,你可以有效地管理节假日数据。希望这个示例对你有所帮助!


你可以将这篇文章发布到你的博客上,为其他开发者提供一个完整的解决方案,同时也帮助他们在项目中处理节假日数据。如果需要他java工具类可以私信我(完全免费,人人为我,我为人人)

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值