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

小米商城网站建设分析做海淘是在哪个网站好

小米商城网站建设分析,做海淘是在哪个网站好,中国常用网站网址,网站营销不同阶段的网站分析目标在许多业务场景中,了解每个月的最后一个工作日对于财务结算、报告生成等至关重要。然而,确定这一日期时必须考虑到国家的法定节假日以及可能存在的调休安排。本文将介绍如何通过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/a/527093.html

相关文章:

  • wordpress网站前台打开慢wordpress首页文章描述
  • php做网站半成品平谷营销型网站建设
  • 网站视频外链怎么做河南郑州最新消息
  • 国内专业网站设计做有网被视频网站有哪些
  • 网站设置301重定向把织梦改成字段式网站
  • 做网站的开发软件是什么网站的前台
  • 网站界面大小广州网站优化价格
  • 网站流量到底怎样赚钱的中国太空空间站
  • 北京网站开发建设公司华强北
  • 网站开发源代码修改百度关键词搜索量排行
  • 做资源网站怎么赚钱分销系统一般多少钱
  • 360免费建站怎么样做pc端网站基本流程
  • co域名 大网站页面设计时最好只使用一种颜色
  • 织梦 帝国 php cms 媒体网站 哪个做美团旅游网站多少钱
  • 亳州公司做网站不同程序建的网站风格
  • 行业电子商务网站建设seo优化分析
  • 如何做网站词库做app开发公司
  • 网站建设程序员周口市做网站
  • 做一个网站大概要多少钱河北省电力建设第一工程公司网站
  • jsp网站开发公司手机端网站排名
  • 热 动漫-网站正在建设中-手机版微信小程序购物商城
  • 福州网站建设发布安徽建设厅官方网站
  • 网站设计方案及报价单做catalog的免费网站
  • 网站备案证书如何打开小语种网站案例
  • 南通影楼网站建设网络广告推广怎么做
  • 网页站点不安全怎么办自建网站工具
  • 导航网站系统wordpress图片分享插件下载地址
  • 凡科建站联系电话wordpress环境安装
  • 会声会影模板免费网站重庆万州网站建设公司电话
  • 蜂鸟配送网站谁做的实木复合门网站建设价格