日常开发很多场景会需要判断节假日 下面的代码可以用于判断一个给定的日期是否是周末、法定节假日、传统节日或者调休日 其中有使用到hutool的ChineseDate类,使用前记得加上hutool的依赖。 import cn.hutool.c
日常开发很多场景会需要判断节假日
下面的代码可以用于判断一个给定的日期是否是周末、法定节假日、传统节日或者调休日
其中有使用到hutool的ChineseDate类,使用前记得加上hutool的依赖。
import cn.hutool.core.date.ChineseDate;import java.time.DayOfWeek;import java.time.LocalDate;import java.time.Month;import java.time.fORMat.DateTimeFormatter;import java.util.HashSet;import java.util.Set;public class HolidayChecker { private static final Set PUBLIC_HOLIDAYS = new HashSet<>(); private static final Set SUBSTITUTE_WORKDAYS = new HashSet<>(); private static final String CHINESE_HOLIDAYS = "春节,清明节,端午节,中秋节"; static { // 添加法定节假日到集合中 // 元旦节 PUBLIC_HOLIDAYS.add(LocalDate.of(LocalDate.now().getYear(), Month.JANUARY, 1)); // 国庆节 PUBLIC_HOLIDAYS.add(LocalDate.of(LocalDate.now().getYear(), Month.OCTOBER, 1)); //添加调休日到集合中 SUBSTITUTE_WORKDAYS.add(LocalDate.of(LocalDate.now().getYear(), Month.OCTOBER, 7)); } public static boolean isWeekendOrPublicHoliday(String dateString) { // 将字符串日期转换为LocalDate对象 LocalDate date = LocalDate.parse(dateString, DateTimeFormatter.ofPattern("yyyy-MM-dd")); // 检查日期是否为调休日 if (SUBSTITUTE_WORKDAYS.contains(date)) { return false; } // 检查日期是否为周末(星期六或星期日) if (date.getDayOfWeek() == DayOfWeek.SATURDAY || date.getDayOfWeek() == DayOfWeek.SUNDAY) { return true; } // 检查日期是否为法定节假日 if (PUBLIC_HOLIDAYS.contains(date)) { return true; } // 检查日期是否为传统节日 ChineseDate chineseDate = new ChineseDate(DateUtil.parseDate(dateString)); if (CHINESE_HOLIDAYS.contains(chineseDate.getFestivals())) { return true; } return false; } public static void main(String[] args) { String dateString = "2023-10-01"; // 示例日期字符串 boolean isWeekendOrPublicHoliday = isWeekendOrPublicHoliday(dateString); System.out.println(isWeekendOrPublicHoliday); }}
优化:
1.方法中的所有节假日及调休日期都是在代码中写死的,不便于节假日的维护,可以在数据库中建表并提供接口配合element-ui中的Calendar组件进行维护,这样更便于用户使用
2.方法返回值是布尔类型用来区分节假日和非节假日,可以考虑返回更多信息,例如节日的类型(如"周末"、"法定节假日"、"调休日"或"传统节日")
来源地址:https://blog.csdn.net/qq_47559530/article/details/131941169
--结束END--
本文标题: Java判断节假日
本文链接: https://lsjlt.com/news/416507.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-04-01
2024-04-03
2024-04-03
2024-01-21
2024-01-21
2024-01-21
2024-01-21
2023-12-23
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0