From 5f3cf501f9f6c216df17ee8af6618b55b537d21a Mon Sep 17 00:00:00 2001 From: yanghui <2536613402@qq.com> Date: 星期五, 21 十月 2022 16:57:54 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/huacheng_test' into local_20221014 --- flower_city/src/main/java/com/dg/core/util/TestDate.java | 154 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 154 insertions(+), 0 deletions(-) diff --git a/flower_city/src/main/java/com/dg/core/util/TestDate.java b/flower_city/src/main/java/com/dg/core/util/TestDate.java new file mode 100644 index 0000000..1a13a9a --- /dev/null +++ b/flower_city/src/main/java/com/dg/core/util/TestDate.java @@ -0,0 +1,154 @@ +package com.dg.core.util; + + +import cn.hutool.core.date.DateTime; +import com.alibaba.fastjson.JSONObject; +import com.iceyyy.workday.WorkUtils; +import com.squareup.okhttp.OkHttpClient; +import com.squareup.okhttp.Request; +import com.squareup.okhttp.Response; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * <p>TestDate 此类用于:</p> + * <p>@author:hujm</p> + * <p>@date:2021年04月22日 17:43</p> + * <p>@remark:</p> + */ +public class TestDate { + + public static void main(String[] args) { + System.out.println(getJjr(2021, 4)); + System.out.println(getMonthWekDay(2021, 4)); + System.out.println(JJR(2021, 4)); + + } + + /** + * 获取周末和节假日 + * + * @param year + * @param month + * @return + */ + public static Set<String> JJR(int year, int month) { + //获取所有的周末 + Set<String> monthWekDay = getMonthWekDay(year, month); + //http://timor.tech/api/holiday api文档地址 + Map jjr = getJjr(year, month + 1); + Integer code = (Integer) jjr.get("code"); + if (code != 0) { + return monthWekDay; + } + Map<String, Map<String, Object>> holiday = (Map<String, Map<String, Object>>) jjr.get("holiday"); + Set<String> strings = holiday.keySet(); + for (String str : strings) { + Map<String, Object> stringObjectMap = holiday.get(str); + Integer wage = (Integer) stringObjectMap.get("wage"); + String date = (String) stringObjectMap.get("date"); + //筛选掉补班 + if (wage.equals(1)) { + monthWekDay.remove(date); + } else { + monthWekDay.add(date); + } + } + return monthWekDay; + } + + /** + * 获取节假日不含周末 + * + * @param year + * @param month + * @return + */ + private static Map getJjr(int year, int month) { + String url = "http://timor.tech/api/holiday/year/"; + OkHttpClient client = new OkHttpClient(); + Response response; + //解密数据 + String rsa = null; + Request request = new Request.Builder() + .url(url) + .get() + .addHeader("Content-Type", "application/x-www-form-urlencoded") + .build(); + try { + response = client.newCall(request).execute(); + rsa = response.body().string(); + } catch (IOException e) { + e.printStackTrace(); + } + return JSONObject.parseObject(rsa, Map.class); + } + + /** + * 获取周末 月从0开始 + * + * @param year + * @param mouth + * @return + */ + public static Set<String> getMonthWekDay(int year, int mouth) { + Set<String> dateList = new HashSet<>(); + SimpleDateFormat simdf = new SimpleDateFormat("yyyy-MM-dd"); + Calendar calendar = new GregorianCalendar(year, mouth, 1); + Calendar endCalendar = new GregorianCalendar(year, mouth, 1); + endCalendar.add(Calendar.MONTH, 1); + while (true) { + int weekday = calendar.get(Calendar.DAY_OF_WEEK); + if (weekday == 1 || weekday == 7) { + dateList.add(simdf.format(calendar.getTime())); + } + calendar.add(Calendar.DATE, 1); + if (calendar.getTimeInMillis() >= endCalendar.getTimeInMillis()) { + break; + } + } + return dateList; + } + + /** + * 判断该日期是否为工作日 + * + * @param dateTime + * @return + */ + public Boolean isWeekday(DateTime dateTime){ + TestDate td=new TestDate(); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(dateTime); + Set<String> jjr = td.JJR(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH)); + String strdate = dateTime.toString("yyyy-MM-dd"); + for (String ans: jjr ) { + if (ans.equals(strdate)) + return false; + } + return true; + } + + /** + * 获取该日期的下个工作日是多少 + * + * @param dateTime + * @return + */ + public DateTime nextWeekDay(DateTime dateTime){ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(dateTime); + while (true){ + calendar.add(calendar.DATE,1); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + String dateTimeToday = sdf.format(calendar.getTime()); + if (!WorkUtils.isWorkendDay(dateTimeToday)){ + return new DateTime(calendar);//返回日期 + } + } + + } + +} -- Gitblit v1.7.1