获取今年的所有法定节假日

介绍

基于HuTool工具类时间工具类,获取今年的所有法定节假日

获取今年所有的周末

public static Map<DateTime,String> getAllWeekend(){
   return new HashMap<DateTime,String>(){{
       for (DateTime dateTime : getAllDayOfYear()) {//今年的所有日期
           if (DateUtil.isWeekend(dateTime)){
               put(dateTime, dateTime.dayOfWeekEnum().toChinese());
           }
       }
   }};
}

获取今年所有的法定假日

默认今年:https://timor.tech/api/holiday/year/
指定年:https://timor.tech/api/holiday/year/2023
指定年和月:https://timor.tech/api/holiday/year/2023-10

private static final String HOLIDAY_URL = "https://timor.tech/api/holiday/year/";
public static Map<DateTime,String> getAllHoliday(Integer year){
   String url = year != null ? HOLIDAY_URL+year : HOLIDAY_URL;
   String response = HttpUtil.get(url);
   Collection<Object> holidays = JSONUtil.parseObj(response).getJSONObject("holiday").values();
   return new HashMap<DateTime,String>(32){{
       for (Object holiday : holidays) {
           JSONObject dateJson = JSONUtil.parseObj(holiday);
           String name = dateJson.getStr("name");
           if (!name.contains("补")){//排除补班
               put(DateTime.of(dateJson.getDate("date")),name);
           }
       }
   }};
}

整体代码

public class HolidayUtil {

    private static final String HOLIDAY_URL = "https://timor.tech/api/holiday/year/";

    /**
     * 获取今年的所有法定节假日包括周末
     */
    public static Map<DateTime,String> getAllDayOff(){
        //周末
        Map<DateTime, String> allWeekend = getAllWeekend();
        //法定假日
        allWeekend.putAll(getAllHoliday(null));
        //排序并返回结果
        return allWeekend.entrySet()
                .stream()
                .sorted(Map.Entry.comparingByKey())
                .collect(Collectors.toMap(
                        Map.Entry::getKey,
                        Map.Entry::getValue,
                        (oldValue, newValue) -> oldValue,
                        LinkedHashMap::new)
                );
    }

    /**
     * 获取今年的所有周末
     */
    public static Map<DateTime,String> getAllWeekend(){
        return new HashMap<DateTime,String>(){{
            for (DateTime dateTime : getAllDayOfYear()) {//今年的所有日期
                if (DateUtil.isWeekend(dateTime)){
                    put(dateTime, dateTime.dayOfWeekEnum().toChinese());
                }
            }
        }};
    }

    /**
     * 获取到今年的所有节日
     * key date 日期
     * value info 描述
     *{
     *   "holiday":true,
     *   "name":"元旦",
     *   "wage":3,
     *   "date":"2023-01-01",
     *   "rest":1
     *}
     */
    public static Map<DateTime,String> getAllHoliday(Integer year){
        String url = year != null ? HOLIDAY_URL+year : HOLIDAY_URL;
        String response = HttpUtil.get(url);
        Collection<Object> holidays = JSONUtil.parseObj(response).getJSONObject("holiday").values();
        return new HashMap<DateTime,String>(32){{
            for (Object holiday : holidays) {
                JSONObject dateJson = JSONUtil.parseObj(holiday);
                String name = dateJson.getStr("name");
                if (!name.contains("补")){//排除补班
                    put(DateTime.of(dateJson.getDate("date")),name);
                }
            }
        }};
    }

    /**
     * 获取今年的所有天
     */
    public static List<DateTime> getAllDayOfYear(){
        DateTime now = DateTime.now();
        DateTime begin = DateUtil.beginOfYear(now);//今年的开始
        DateTime end = DateUtil.endOfYear(now);//今年的结束
        return DateUtil.rangeToList(begin,end, DateField.DAY_OF_YEAR);//今年的所有日期
    }
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Java获取法定节假日可以通过使用第三方库来实现。一个常用的库是"Jollyday",它提供了一些方便的方法来获取法定节假日的信息。 首先,你需要在你的项目中引入Jollyday库。你可以在Maven或Gradle中添加以下依赖项: Maven: ```xml <dependency> <groupId>de.jollyday</groupId> <artifactId>jollyday</artifactId> <version>0.5.1</version> </dependency> ``` Gradle: ```groovy implementation 'de.jollyday:jollyday:0.5.1' ``` 接下来,你可以使用以下代码来获取法定节假日的信息: ```java import de.jollyday.Holiday; import de.jollyday.HolidayManager; import de.jollyday.config.ConfigurationProviderManager; public class Main { public static void main(String[] args) { // 创建HolidayManager对象 HolidayManager holidayManager = HolidayManager.getInstance(ConfigurationProviderManager.createConfigurationProvider()); // 获取指定年份的所有法定节假日 int year = 2022; Set<Holiday> holidays = holidayManager.getHolidays(year, "CN"); // 遍历输出每个法定节假日的信息 for (Holiday holiday : holidays) { System.out.println(holiday.getDate() + " - " + holiday.getDescription()); } } } ``` 上述代码中,我们首先创建了一个HolidayManager对象,然后使用getHolidays方法获取指定年份和国家代码("CN"代表中国)的所有法定节假日。最后,我们遍历输出每个法定节假日的日期和描述信息。 请注意,Jollyday库提供了许多其他功能,例如获取特定日期是否为法定节假日获取指定日期范围内的法定节假日等。你可以根据自己的需求进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泽泽泽json

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值