java获取国家法定节假日和周末

java获取国家法定节假日和周末

package com.lxh.config.utils;

import com.alibaba.fastjson.JSONObject;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 * @ClassName: Holiday
 * @Author: lxh
 * @Description: 节假日
 * @Date: 2022/3/19 17:29
 */
public class HolidayUtils {
    /**
     * java获取国家法定节假日和周末
     * @param year /
     * @param month /
     * @return /
     */
    public static Set<String> JJR(int year, int month) {
        //获取所有的周末
        Set<String> monthWekDay = getMonthWekDay(year, month);
        //http://timor.tech/api/holiday api文档地址
        Map jjr = getJjr(year, month + 1);
        Integer code = (Integer) jjr.get("code");
        if (code != 0) {
            return monthWekDay;
        }
        Map<String, Map<String, Object>> holiday = (Map<String, Map<String, Object>>) jjr.get("holiday");
        Set<String> strings = holiday.keySet();
        for (String str : strings) {
            Map<String, Object> stringObjectMap = holiday.get(str);
            Integer wage = (Integer) stringObjectMap.get("wage");
            String date = (String) stringObjectMap.get("date");
            //筛选掉补班
            if (wage.equals(1)) {
                monthWekDay.remove(date);
            } else {
                monthWekDay.add(date);
            }
        }
        return monthWekDay;
    }

    /**
     * 获取节假日不含周末
     * @param year /
     * @param month /
     * @return /
     */
    private static LinkedHashMap getJjr(int year, int month) {
        String url = "http://timor.tech/api/holiday/year/";
        OkHttpClient client = new OkHttpClient();
        Response response;
        //解密数据
        String rsa = null;
        Request request = new Request.Builder()
                .url(url)
                .get()
                .addHeader("Content-Type", "application/x-www-form-urlencoded")
                .build();
        try {
            response = client.newCall(request).execute();
            rsa = response.body().string();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return JSONObject.parseObject(rsa, LinkedHashMap.class);
    }

    /**
     * 获取周末  月从0开始
     * @param year /
     * @param month /
     * @return /
     */
    public static Set<String> getMonthWekDay(int year, int month) {
        Set<String> dateList= new LinkedHashSet<>();
        SimpleDateFormat simdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar calendar = new GregorianCalendar(year, month, 1);
        int i = 1;
        while (calendar.get(Calendar.YEAR) < year + 1) {
            calendar.set(Calendar.WEEK_OF_YEAR, i++);
            calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
            if (calendar.get(Calendar.YEAR) == year) {
                dateList.add(simdf.format(calendar.getTime()));
            }
            calendar.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
            if (calendar.get(Calendar.YEAR) == year) {
                dateList.add(simdf.format(calendar.getTime()));
            }
        }
        return dateList;
    }

}

需要的依赖

        <!-- okhttp 获取节假日-->
        <!--https://www.pangugle.com/lib/maven/view/com.squareup.okhttp3/okhttp.html-->
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>3.14.9</version>
        </dependency>
  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Java中判断当前日期是否节假日和周六周日可以使用Java的日期类库和国家法定节假日规定来判断。 首先,获取当前日期可以使用Java的Date类或Calendar类。例如: ```java Date date = new Date(); //获取当前日期 Calendar calendar = Calendar.getInstance(); //获取当前日期 ``` 判断当前日期是否是周六或周日,可以使用Calendar类的get方法获取当前日期的星期几,如果是1(星期日)或7(星期六)则为周末。例如: ```java int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); //获取当前星期几 if (dayOfWeek == Calendar.SATURDAY || dayOfWeek == Calendar.SUNDAY) { System.out.println("今天是周末"); } ``` 判断当前日期是否是节假日,可以使用国家法定节假日规定来判断。例如,在中国,国家法定节假日包括春节、清明节、劳动节、端午节、中秋节、国庆节等。以下是一个简单的判断方法: ```java SimpleDateFormat sdf = new SimpleDateFormat("MMdd"); String dateStr = sdf.format(date); if ("0101".equals(dateStr)) { System.out.println("今天是元旦节"); } else if ("0501".equals(dateStr)) { System.out.println("今天是劳动节"); } else if ("1001".equals(dateStr)) { System.out.println("今天是国庆节"); } else { System.out.println("今天不是节假日"); } ``` 需要注意的是,国家法定节假日可能会根据政策改变,因此以上判断方法可能不完全准确。如果需要更精确的判断,可以使用一些专门的日期计算工具或API。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值