最近工作中需要用到万年历的节假日信息。所以就建了一张日历表来维护节假日信息。
因为之后年份的节假日信息在当前年份是没办法确定的需要等节假日发布之后才可以,所以我每次就是获取当年的节假日,然后用日期自增 判断自增的日期是不是在节假日里,如果没有就判断是不是周末,整体的逻辑还是比较简单的
private static List<Calendar> list = new ArrayList<>();
public static void main(String[] args) {
// 获取节假日期
test();
LocalDateTime parse = LocalDateTimeUtil.parse("2022-01-01T12:23:56");
StringBuilder sb = new StringBuilder("INSERT INTO `b_calendar`(`calendar_time`, `is_work`, `calendar_remarks`) VALUES (");
FileAppender appender = new FileAppender(FileUtil.file("C:\\Users\\gzm\\Desktop\\日历.sql"), 16, true);
int a = 0;
while (true){
sb = new StringBuilder("INSERT INTO `b_calendar`(`calendar_time`, `is_work`, `calendar_remarks`) VALUES (");
sb.append("'");
String format = LocalDateTimeUtil.format(parse, "yyyy-MM-dd");
sb.append(format);
sb.append("',");
for (Calendar calendar : list) {
if(StrUtil.equals(format,calendar.getDate())){
sb.append(calendar.getHoliday() ? 2 : 1);
sb.append(",'");
sb.append(calendar.getName());
sb.append("');");
a = 1;
break;
}
}
if(a == 0){
boolean weekend = LocalDateTimeUtil.isWeekend(parse);
sb.append(weekend ? 2 : 1);
sb.append(",'");
sb.append(weekend ? "周末":"工作日");
sb.append("');");
}
// 重置标记位,把sql写入文件
a = 0;
appender.append(sb.toString());
LocalDateTime offset = LocalDateTimeUtil.offset(parse, 1, ChronoUnit.DAYS);
if(offset.getYear() != parse.getYear()){
break;
}
parse = offset;
}
appender.flush();
}
private static void test(){
String result2 = HttpRequest.get("http://timor.tech/api/holiday/year/2022")
.execute().body();
JSONObject jsonObject = JSONUtil.parseObj(result2);
JSONObject holiday = JSONUtil.parseObj(jsonObject.get("holiday"));
HashMap hashMap = JSONUtil.toBean(holiday, HashMap.class);
for (Object o : hashMap.keySet()) {
Object o1 = hashMap.get(o);
Calendar calendar = JSONUtil.toBean(JSONUtil.parseObj(o1), Calendar.class);
list.add(calendar);
}
list.forEach(System.out::println);
}
我这里的选择是拼接sql写到文件里由我拿着sql去数据库执行,也可以用定时任务每年一月一日把数据插入表里
@Data
public class Calendar {
private Boolean holiday;
private String name;
private String date;
}
用到了hutool包里的一些工具类
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.2</version>
</dependency>