当前位置: 首页 > news >正文

响应式网站 翻译网站关键词排名如何提升

响应式网站 翻译,网站关键词排名如何提升,wordpress 获取页面id,网站设计 导航条前言 在日常开发中,我们经常需要判断某一天是工作日还是休息日。 遗憾的是,常见工具类库中并没有直接提供“节假日判断”的功能。原因在于:中国的节假日安排由国务院每年统一发布,存在动态性和不确定性。 因此,一个可行…

前言

在日常开发中,我们经常需要判断某一天是工作日还是休息日。
遗憾的是,常见工具类库中并没有直接提供“节假日判断”的功能。原因在于:中国的节假日安排由国务院每年统一发布,存在动态性和不确定性

因此,一个可行的方案是:维护一份节假日数据,并封装成工具类供项目调用。下面我分享一个基于 Java + JSON + 定时检测 的实现方案。


原理说明

  1. 数据来源:国务院每年 11 月前后会发布次年的节假日安排;

  2. 数据格式:节假日信息经过处理后保存为 JSON 文件

  3. 工具类逻辑

    • 启动时加载 2007 年至今的节假日数据;
    • 提供方法 isRestDay / isWorkDay 判断某天状态;
    • 默认规则:如果当天未配置,则按周六日为休息日。
  4. 提醒机制:通过单元测试或定时任务,在 12 月份自动检查下一年节假日文件是否存在,避免遗漏。


代码实现

1. 测试类:检测是否加载节假日数据

@Test
void testHolidayStatus() {ZonedDateTime now = ZonedDateTime.now(ZoneId.of("Asia/Shanghai"));final int monthValue = now.getMonthValue();// 如果当前时间是12月,则优先检查下一年的节假日数据int currentYear = monthValue == 12 ? now.getYear() + 1 : now.getYear();System.out.printf("startYear:%s, currentYear:%s, 一共%s年%n", HolidayUtil.START_YEAR, currentYear, currentYear - HolidayUtil.START_YEAR + 1);for (int year = HolidayUtil.START_YEAR; year <= currentYear; year++) {DateTime holiday = DateUtil.parse(String.format("%s-10-01", year));if (Objects.isNull(HolidayUtil.getHolidayStatus(holiday))) {throw new RuntimeException(String.format("当前已到12月,请补充【%s】年的放假文件", year));}assertTrue(HolidayUtil.isRestDay(holiday));}System.out.println(HolidayUtil.isRestDay(DateUtil.parse("2025-09-28")));
}

2. 工具类:HolidayUtil

public class HolidayUtil {private static final Map<String, Boolean> HOLIDAY_MAP = new HashMap<>();public static final int START_YEAR = 2007;static {ZonedDateTime now = ZonedDateTime.now(ZoneId.of("Asia/Shanghai"));int currentYear = now.getYear();for (int year = START_YEAR; year <= currentYear; year++) {loadYear(year);}}@SneakyThrowspublic static void loadYear(int year) {String fileName = String.format("holiday/%d.txt", year);URL resource = HolidayUtil.class.getClassLoader().getResource(fileName);if (resource == null) {throw new RuntimeException("未找到节假日文件: " + fileName);}try (InputStream is = new FileInputStream(new File(resource.toURI()))) {ObjectMapper mapper = new ObjectMapper();List<Map<String, Object>> list = mapper.readValue(is, new TypeReference<>() {});for (Map<String, Object> item : list) {HOLIDAY_MAP.put((String) item.get("date"), (Boolean) item.get("holiday"));}}}public static Boolean getHolidayStatus(DateTime date) {return HOLIDAY_MAP.get(date.toDateStr());}public static boolean isRestDay(DateTime date) {Boolean status = getHolidayStatus(date);if (status != null) return status;return date.dayOfWeekEnum() == DateTime.DayOfWeek.SATURDAY|| date.dayOfWeekEnum() == DateTime.DayOfWeek.SUNDAY;}public static boolean isWorkDay(DateTime date) {return !isRestDay(date);}
}

节假日数据格式

节假日数据维护为 JSON 文件,结构如下:

[{ "date": "2025-01-01", "holiday": true },{ "date": "2025-01-26", "holiday": false },{ "date": "2025-02-08", "holiday": false },{ "date": "2025-05-01", "holiday": true },{ "date": "2025-09-28", "holiday": false }
]
  • holiday = true → 表示节假日/休息日
  • holiday = false → 表示调休上班

检测机制

为了避免忘记维护数据,可以在单元测试或定时任务中加入 文件存在性检查
比如在每年 12 月,检查下一年的文件是否存在,如果不存在就抛出异常提醒。


总结

本文实现了一个简易的 节假日判断工具类,其核心思路是:

  • 通过维护每年的国务院放假数据(JSON 文件);
  • 在工具类中加载并判断日期状态;
  • 加入提醒机制,保证节假日数据及时更新。

这个工具可以广泛应用在:

  • OA 系统请假审批
  • 考勤/排班计算
  • 财务/薪资发放逻辑

简单易用,但实用性很强。 🚀


http://www.dtcms.com/a/449257.html

相关文章:

  • python爬虫(二) ---- JS动态渲染数据抓取
  • 国庆回来的css
  • 廊坊做网站的电话公司网站外包
  • 八股文:计算机网络-20250925
  • MySql速成笔记5(多表关系)
  • 如何设计和建立一个公司的网站佛山网站优化有
  • 开源 C++ QT QML 开发(六)自定义控件--波形图
  • excel-mcp-server 安装
  • Axios快速上手
  • 中国建网站报价电子商务网站的建设流程图
  • 某单位固态硬盘站点备份至固态硬盘的站点备份方案
  • 高级经济师资源合集
  • 【数据结构】数据结构考研核心:树形查找算法对比与应用场景全指南
  • 做公司网站需要了解哪些东西体育网站的制作哪里可以做
  • 【Docker】解决Docker中“exec format error”错误:架构不匹配的完整指南
  • 如何自己开个网站平台成立网站建设公司要求
  • [嵌入式embed]RT-ThreadStudio-STM32F103C8T6(江协科技)+移植RT-Thread v4.11模版
  • 元宇宙的科幻预言:影视作品中的元宇宙畅想
  • Day07_刷题niuke20251007
  • 厦门湖里区建设局网站深圳宝安美容医院网站建设
  • 人机共生:生成式 AI 重构内容创作的机遇与博弈
  • 正规手表回收网站如何自己制作网站
  • 6.基本查询
  • python高校心理健康服务小程序(源码+文档+调试+基础修改+答疑)
  • vscode code-server
  • MySQL 8.0性能优化终极指南
  • 做网站有什么优势做外贸开店用哪个网站
  • 射频前端国产替代:昂瑞微扮演重要角色
  • 工程师 - 配置Raspberry Pi Pico W 开发板
  • 在vscode下的cmake项目里传参调试c++命令行程序