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

旅游类网站建设教案今日国内新闻

旅游类网站建设教案,今日国内新闻,flask网站开发源码,平面设计视频在许多业务场景中,了解每个月的最后一个工作日对于财务结算、报告生成等至关重要。然而,确定这一日期时必须考虑到国家的法定节假日以及可能存在的调休安排。本文将介绍如何通过Java编写一个工具类来获取指定月份的最后一个工作日,并利用第三…

在许多业务场景中,了解每个月的最后一个工作日对于财务结算、报告生成等至关重要。然而,确定这一日期时必须考虑到国家的法定节假日以及可能存在的调休安排。本文将介绍如何通过Java编写一个工具类来获取指定月份的最后一个工作日,并利用第三方免费API来处理法定节假日和调休情况。

一、准备工作

首先,你需要引入一些必要的依赖库,如Hutool用于日期操作和JSON解析,Fastjson用于简化JSON处理等。如果你使用的是Maven项目,请确保你的pom.xml文件中包含以下依赖:

<dependencies><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.11</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.78</version></dependency>
</dependencies>

二、实现逻辑

1. 获取节假日数据

我们将从第三方API http://timor.tech/api/holiday/year/{year} 获取指定年份的所有节假日信息。这个API返回的数据包含了所有节假日及其是否为调休的信息。

private static Map<String, Boolean> fetchHolidays(int year) {Map<String, Boolean> holidayMap = new HashMap<>();String s = HttpUtils.sendGet("http://timor.tech/api/holiday/year/" + year);JSONObject jsonObject = JSONUtil.parseObj(s);JSONObject holidayMapJson = jsonObject.getJSONObject("holiday");if (Objects.isNull(holidayMapJson)) {return null;}// true表示是节假日,false表示是调休holidayMapJson.forEach((k, v) -> {JSONObject dayInfoObj = (JSONObject) v;holidayMap.put((String) dayInfoObj.get("date"), (Boolean) dayInfoObj.get("holiday"));});return holidayMap;
}

2. 计算最后的工作日

接下来,我们定义一个方法来计算给定月份的最后一个工作日,同时考虑法定节假日和调休。

public static Date getLastWorkingDayOfMonth(Map<String, Boolean> specialDays) {Date lastDayOfMonth = DateUtil.endOfMonth(new Date());Calendar calendar = DateUtil.calendar(lastDayOfMonth);while (!isWorkingDay(calendar, specialDays)) {calendar.add(Calendar.DAY_OF_MONTH, -1);}return calendar.getTime();
}

3. 判断某天是否为工作日

最后,我们需要一个辅助函数来判断某一天是否为工作日(排除周末和节假日)。

private static boolean isWorkingDay(Calendar calendar, Map<String, Boolean> specialDays) {int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);String dateStr = DateUtil.format(calendar.getTime(), "yyyy-MM-dd");// 默认情况下,周六、周日是非工作日if ((dayOfWeek == Calendar.SATURDAY || dayOfWeek == Calendar.SUNDAY) && !specialDays.getOrDefault(dateStr, true)) {// 如果这一天被特别指定为工作日,则视为工作日return true;}// 检查是否为法定假日或不在特殊安排中的普通周末return !(specialDays.containsKey(dateStr) && specialDays.get(dateStr));
}

三、测试与运行

现在,我们可以编写一个简单的主函数来测试我们的功能。

public static void main(String[] args) {System.out.println("本月的最后一个工作日为:" + DateUtil.format(getLastWorkingDayOfMonth(fetchHolidays(DateUtil.year(new Date()))), "yyyy-MM-dd"));
}

四、总结

通过上述步骤,我们成功地创建了一个工具类,可以方便地获取每个月的最后一个工作日,并充分考虑了法定节假日和调休的影响。这种方法不仅提高了准确性,还能灵活应对不同的业务需求变化。


全部源码如下:

package com.example.demo.util;import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ReUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HtmlUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.example.demo.excel.constant.DimenEnum;
import com.example.demo.excel.domain.ExamineVo;
import com.example.demo.excel.util.http.HttpUtils;import java.time.DayOfWeek;
import java.time.LocalDate;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;public class Demo5 {public static void main(String[] args) {System.out.println("本月的最后一个工作日为:" + DateUtil.format(getLastWorkingDayOfMonth(fetchHolidays(DateUtil.year(new Date()))), "yyyy-MM-dd"));}/*** 从API获取指定年份的所有节假日*/private static Map<String, Boolean> fetchHolidays(int year) {Map<String, Boolean> holidayMap = new HashMap<>();String s = HttpUtils.sendGet("http://timor.tech/api/holiday/year/" + year);JSONObject jsonObject = JSONUtil.parseObj(s);JSONObject holidayMapJson = jsonObject.getJSONObject("holiday");if (Objects.isNull(holidayMapJson)) {return null;}//true表示是节假日,false表示是调休holidayMapJson.forEach((k, v) -> {JSONObject dayInfoObj = (JSONObject) v;holidayMap.put((String) dayInfoObj.get("date"), (Boolean) dayInfoObj.get("holiday"));});return holidayMap;}/*** 计算本月的最后一个工作日,考虑到法定节假日和调休*/public static Date getLastWorkingDayOfMonth(Map<String, Boolean> specialDays) {Date lastDayOfMonth = DateUtil.endOfMonth(new Date());Calendar calendar = DateUtil.calendar(lastDayOfMonth);while (!isWorkingDay(calendar, specialDays)) {calendar.add(Calendar.DAY_OF_MONTH, -1);}return calendar.getTime();}/*** 判断给定日期是否为工作日,考虑法定节假日和调休*/private static boolean isWorkingDay(Calendar calendar, Map<String, Boolean> specialDays) {int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);String dateStr = DateUtil.format(calendar.getTime(), "yyyy-MM-dd");// 默认情况下,周六、周日是非工作日if ((dayOfWeek == Calendar.SATURDAY || dayOfWeek == Calendar.SUNDAY) && !specialDays.getOrDefault(dateStr, true)) {// 如果这一天被特别指定为工作日,则视为工作日return true;}// 检查是否为法定假日或不在特殊安排中的普通周末return !(specialDays.containsKey(dateStr) && specialDays.get(dateStr));}
}
http://www.dtcms.com/wzjs/440071.html

相关文章:

  • 新公司网站建设方案seo推广优化外包价格
  • 方圆网通网站建设公司网站怎么优化
  • 重庆网站建设 公司搜索引擎收录查询工具
  • 杭州做公司网站哪家好站长之家seo一点询
  • 免费网站建设有哪些百度有刷排名软件
  • 网站公司谁家好2022年五月份热点事件
  • 装潢设计学校seo sem是啥
  • wordpress 检索海口seo计费
  • 九度网站建设百度网址大全免费下载
  • 新泰房产信息与住宅网seo评测论坛
  • wordpress eshop 中文国内好的seo网站
  • 镇江网站建设zjmfkj免费seo免费培训
  • wordpress 视频网站新手学seo
  • wordpress 模块开发教程seo网站优化方法
  • 标准网站是哪个百度快照查询入口
  • 无锡有哪些做网站的公司一网信息一个简单便捷的新闻网站
  • 哈尔滨网站建设学校站长工具
  • 网站开发与应用案例教程优化设计答案六年级上册
  • 银饰品网站建设规划策划书网络营销策划的内容
  • 现在都是用什么做网站硬件优化大师
  • 北京网站建设价格低网站优化推广招聘
  • php动态网站设计与开发武汉seo推广优化公司
  • 可以网站可以做免费的文案广告语流量点击推广平台
  • 建设开发有限公司网站公司关键词seo
  • wordpress 4.8漏洞b2b网站推广优化
  • cae毕业设计代做网站推广软文发稿
  • 通化 网站建设网络营销推广专家
  • 聊城做网站低费用十大嵌入式培训机构
  • 响应式门户网站模板百度快速收录seo工具软件
  • 番禺建设网站企业完整的网页设计代码