200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > java 获取日期是否是工作日(包括正常工作日和节假日调休补班)

java 获取日期是否是工作日(包括正常工作日和节假日调休补班)

时间:2019-10-21 16:56:29

相关推荐

java 获取日期是否是工作日(包括正常工作日和节假日调休补班)

本博客提供两个方法,集成一个工具类

1.传入yyyyMMdd 格式的 String 类型时间 返回今天是否是工作日,请求/网站 获取getIsWorkingDay()

2.传入 Integer 类型 的 工作日 天数,返回从今天开始往前推的自然日天数。getNatureDay()

package com.xxx.quartz.utils;import com.alibaba.fastjson.JSONObject;import lombok.extern.slf4j.Slf4j;import java.io.ByteArrayOutputStream;import java.io.InputStream;import .URL;import java.time.LocalDate;import java.time.LocalDateTime;import java.time.format.DateTimeFormatter;@Slf4jpublic class GetIsWorkingDay {/*** 正常工作日对应结果为 0*/public static final String DAY_STATUS_0 = "0";/*** 法定节假日对应结果为 1*/public static final String DAY_STATUS_1 = "1";/*** 节假日调休补班对应的结果为 2*/public static final String DAY_STATUS_2 = "2";/*** 休息日对应结果为 3*/public static final String DAY_STATUS_3 = "3";/*** 传入格式 为 yyyyMMdd 日期 返回 是否是工作日*/public static Boolean getIsWorkingDay(String date) {try {URL u = new URL("/Tools/holiday?date=" + date);InputStream in = u.openStream();ByteArrayOutputStream out = new ByteArrayOutputStream();try {byte buf[] = new byte[1024];int read = 0;while ((read = in.read(buf)) > 0) {out.write(buf, 0, read);}} finally {if (in != null) {in.close();}}byte b[] = out.toByteArray();String s = new String(b, "utf-8");JSONObject jsonObject = JSONObject.parseObject(s);if (DAY_STATUS_0.equals(jsonObject.getString("data")) || DAY_STATUS_2.equals(jsonObject.getString("data"))) {return true;} else {return false;}} catch (Exception e) {e.printStackTrace();log.error("------------------调用获取工作日接口失败------------------");return true;}}/*** 传入要工作日天数,返回从今天开始往前推的自然日天数*/public static Integer getNatureDay(Integer day) {try {Integer reDay =0;LocalDateTime ldt = LocalDateTime.now();LocalDate ld = ldt.toLocalDate();for(int i=0;i<day;i++) {ld = ld.minusDays(1);String date = ld.format(DateTimeFormatter.ofPattern("yyyyMMdd"));Boolean flg = getIsWorkingDay(date);if(!flg){day++;}reDay++;//为防止死循环 不计算大于100个自然日if(day>100){break;}}return reDay;} catch (Exception e) {e.printStackTrace();log.error("------------------调用获取工作日接口失败------------------");return day;}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。