简单使用java获取7个法定假期的时间

文章目录

  • 说明
  • 一、查询假期
    • 1.1 定义一个常量类
  • 二、编写获取假期的类
    • 2.1 结算结果

说明

本文简单介绍了如何获取7个法定假期的时间,如有出入,请留言,积极接收批评

为了获取农历日期简单点,使用了 hutool 工具

        
            cn.hutool
            hutool-all
            5.7.20
        

一、查询假期

通过官网查询,一共有7个主要的节日
http://www.gov.cn/zhengce/content/2021-10/25/content_5644835.htm

分别为:
一、元旦:2022年1月1日至3日放假,共3天。

二、春节:1月31日至2月6日放假调休,共7天。1月29日(星期六)、1月30日(星期日)上班。

三、清明节:4月3日至5日放假调休,共3天。4月2日(星期六)上班。

四、劳动节:4月30日至5月4日放假调休,共5天。4月24日(星期日)、5月7日(星期六)上班。

五、端午节:6月3日至5日放假,共3天。

六、中秋节:9月10日至12日放假,共3天。

七、国庆节:10月1日至7日放假调休,共7天。10月8日(星期六)、10月9日(星期日)上班。

1.1 定义一个常量类

/**
 * @program: demo-test
 * @description: 假日静态类
 * @author: czchen
 * @date: 2022-02-14 11:41:30
 */
public class HolidayConstant {
    public final static String NEWYEARDAY = "元旦节";
    public final static String CHINESENEWYEARGREGORIANFESTIVAL = "春节";
    public final static String QINGMINGFESTIVAL = "清明节";
    public final static String LABORDAY = "劳动节";
    public final static String DRAGONBOATGREGORIANFESTIVAL = "端午节";
    public final static String MIDAUTUMNGREGORIANFESTIVAL = "中秋节";
    public final static String NATIONALDAY = "国庆节";
}

二、编写获取假期的类

  • 1、注意清明的需要进行计算的,21世纪的公式为:[Y*D+C]-L
    公式解读:Y=年数后2位,D=0.2422,L=闰年数,21世纪C=4.81,20世纪=5.59.
/**
 * @program: demo-test
 * @description: 假期工具类
 * @author: czchen
 * @date: 2022-02-14 11:46:05
 */
public class HolidayUtil {

    /**
     * 获取假期时间
     * @param holidayName 假期名称
     * @param year 当前年份
     * @return
     */
    public static Date getHoliday(String holidayName, int year) {
        switch (holidayName) {
            case HolidayConstant.NEWYEARDAY:
                return DateUtil.parse(year + "-1-1");
            case HolidayConstant.CHINESENEWYEARGREGORIANFESTIVAL:
                ChineseDate chinesenewYearFestival = new ChineseDate(year, 1, 1);
                return chinesenewYearFestival.getGregorianDate();
            case HolidayConstant.QINGMINGFESTIVAL:
                int param = year - 2000;
                int qingmingDay = (int) (param * 0.2422 + 4.81) - param / 4;
                return DateUtil.parse(year + "-4-" + qingmingDay);
            case HolidayConstant.LABORDAY:
                return DateUtil.parse(year + "-5-1");
            case HolidayConstant.DRAGONBOATGREGORIANFESTIVAL:
                ChineseDate dragonBoatFestival = new ChineseDate(year, 5, 5);
                return dragonBoatFestival.getGregorianDate();
            case HolidayConstant.MIDAUTUMNGREGORIANFESTIVAL:
                ChineseDate midAutumnFestival = new ChineseDate(year, 8, 15);
                return midAutumnFestival.getGregorianDate();
            case HolidayConstant.NATIONALDAY:
                return DateUtil.parse(year + "-10-1");
            default:
                return new Date();
        }
    }

    public static void main(String[] args) {
        Date qingmingFestival = getHoliday(HolidayConstant.QINGMINGFESTIVAL, 2022);
        System.out.println(HolidayConstant.QINGMINGFESTIVAL +"时间为:" + qingmingFestival);
    }

}

2.1 结算结果

清明节时间为:2022-04-05 00:00:00

你可能感兴趣的:(JAVA基础知识,java,开发语言,后端)