spring实现判断日期是否为节假日(包括周末)功能

Java没有提供关于节假日的类和方法,也没找到类似的第三方工具类,通过百度,实现该功能大概有四种方法。

第一种:使用第三方提供的接口。但是不稳定,如果资源足够,且有时间维护,也可以使用。
第二种:使用数据库,创建表,将节假日时间插入表中。优点:利于维护,以及方便临时修改
第三种:使用爬虫技术,爬取政府官网节假日安排,并处理(不会)。
第四种:使用配置文件(目前使用的是这种方法)

使用配置文件方式

配置文件使用的是properties文件

holiday202011=1,7,8,14,15,21,22,28,29
holiday202012=5,6,12,13,19,20,26,27
holiday202101=1,2,3,9,10,16,17,23,24,30,31
holiday202102=6,11,12,13,14,15,16,17,21,27,28

然后读取文件;框架是springmvc,这里使用的是配置类读取。

@Configuration
@PropertySource(value = "classpath:xxx.properties")
public class HolidayConfig {

    @Autowired
    private Environment env;// 用于读取配置文件

    public List getHoliday(String currentDate) {
    
        // 配置文件以holiday+年月的形式;例如holiday202012
        String property = "holiday"+currentDate;
        return env.getProperty(property,List.class);
    }
}

注入HolidayConfig 类

    @Autowired
    private HolidayConfig holidayConfig;
    /**
     * 判断是否是节假日,是则返回true,否则返回false
     *
     * @param date        时间
     * @param currentDate 配置文件相应年月
     * @return boolean
     */
    private boolean isHoliday(Date date, String currentDate) {
        List<Integer> holiday = holidayConfig.getHoliday(currentDate);
        String day = DateUtil.datetimeToString(date, "d");
        if (holiday.contains(Integer.parseInt(day))) {
            return true;
        } else {
            return false;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值