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

网站建设的费用报价html网页模板下载html模板免费

网站建设的费用报价,html网页模板下载html模板免费,用自己的名字设计logo,网站推广100种方法在许多业务场景中,了解每个月的最后一个工作日对于财务结算、报告生成等至关重要。然而,确定这一日期时必须考虑到国家的法定节假日以及可能存在的调休安排。本文将介绍如何通过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/581475.html

相关文章:

  • 自己建网站百度到吗企业网站设计的主要目的
  • 长春作网站俄文网站推广
  • 北京网站技术开发公司html网页制作代码
  • 网站建设流程文字稿门户一号wordpress主题
  • 江苏网站建设官网企业如何申请网站
  • 建设部网站施工合同范本去哪找营销技巧的重要性
  • 做网站设计素材百度文库首页
  • 简述网站建设及维护全过程wordpress 使用七牛
  • 单页推广网站模版基于asp的网站开发
  • 做网站能接到项目工程吗在线平台
  • 网站排名优化公司哪家好网站制作专业的公司叫什么
  • 网站备案 公司注销吗企业展示网站建设需要做什么
  • 在哪个网站做游戏视频好租凭境外服务器做违规网站
  • 织梦网站转移服务器广州网站建设定制费用
  • 重庆网站建设夹夹虫公司.可信赣州网络问政
  • 深圳做网站哪个公司最好财税营销型网站
  • 汽车网站开发方案如何把自己电脑做网站服务器
  • 网站导航条图片素材河北沧为信息技术有限公司
  • 高端网站推荐辽宁网站建设学校
  • 网站内优化怎么做万能网
  • 网站生成wap建设网站的技术难点
  • 女生做网站编辑设计素材网站推荐2023
  • 企业网站的网络营销毕业设计做网站老师会问什么
  • 泰安肥城建设局网站百度指数资讯指数是指什么
  • 平面磨床东莞网站建设广州网站制作哪家专业
  • 江苏省建设证书变更网站做网站 360
  • 网站建设方案华为html网站开发例子
  • 网站备案的幕布是什么意思官方网站搭建
  • 网站开发技术的发展流程求职网站开发多少钱
  • 大连seo建站网站建设优化