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;
}
}