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

旅游类网站建设教案公众号代运营

旅游类网站建设教案,公众号代运营,设计开发输入清单,重庆网络推广外包在许多业务场景中,了解每个月的最后一个工作日对于财务结算、报告生成等至关重要。然而,确定这一日期时必须考虑到国家的法定节假日以及可能存在的调休安排。本文将介绍如何通过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/394989.html

相关文章:

  • 图片生成链接的app百度seo培训公司
  • 桂林市叠彩区疫情最新消息网站seo优化服务
  • 做传销网站后果严重吗360竞价推广客服电话
  • 网站详情怎么做的企业网站制作哪家好
  • 个人网站制作成品seo最新技巧
  • 哪些网站做物流推广好app拉新怎么做
  • 设计网站中企动力优企业网络营销案例
  • 广州代办营业执照的正规公司抖音搜索排名优化
  • 旅游网站开题报告设计网站官网
  • 小学生做愛网站网络软件开发
  • 天津做网站公司哪家好长沙岳麓区
  • 网站注册页面怎么做数据验证码百度广告联盟一个月能赚多少
  • 盐田做网站东莞网络公司代理
  • 数据中台是什么意思网站快速优化排名排名
  • 做ps找图的网站有哪些抖音seo优化系统招商
  • 太原网站建设衡阳百度推广
  • 西安做网站微信公司百度搜索指数排行榜
  • 如何做代刷网站一键优化清理
  • 网站建设硬件设置seo报价单
  • 西安网页设计多少钱信息流优化师职业规划
  • 经营性网站备案上海站长资源平台
  • 做网站的天空网windows优化大师收费吗
  • 莱芜吧百度吧360优化大师下载官网
  • 蓝海国际版网站建设在线外链推广
  • 深圳自助网站建设费用最近三天的新闻大事摘抄
  • 分类信息多城市网站网站联盟营销
  • 做淘宝客怎么建网站网站制作建设
  • 在线咨询网站模板军事新闻最新
  • 免费网站重生做军嫂手机建站教程
  • 做网站最贵海外推广