节假日 万年历 Api util


import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;/*** 聚合数据  https://www.juhe.cn/** 万年历  177**/
public class HolidaysUtils {/*返回参数说明:名称  类型  说明error_code    int 返回状态码reason string  返回原因result  string  返回实体内容holiday   string  当月近期假日holiday_array array   当月近期假期(数组类型)status  string  1:放假,2:上班*/private static String key = Constants.Holidays_key;private static String url = "https://v.juhe.cn/calendar/month?key=$key&year-month=";/*** 缓存月份查询对象  key 2021-1*/private static Map<String, JSONObject> dataMap = new HashMap();/*** 缓存特殊日期 是否上班 key 2021-5-1  1:放假,2:上班*/private static Map<String,Integer> dateStatus = new HashMap<>();private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M");private static SimpleDateFormat dateSdf = new SimpleDateFormat("yyyy-M-d");private static JSONObject getMonth(Date date){Calendar c = Calendar.getInstance();c.setTime(date);Integer month = c.get(Calendar.MONTH);if(month == 11){c.add(Calendar.MONTH,-1);}return getMonth(sdf.format(c.getTime()));}/*** 获取月份 近期假期* @param month* @return*/private static JSONObject getMonth(String month){if(dataMap.containsKey(month)){return dataMap.get(month);}else{try{//调用聚合数据 万年历接口String uri = url.replace("$key",key)+month;String data = load(uri);System.out.println(data);JSONObject json = (JSONObject) JSONObject.parse(data);if(json.getIntValue("error_code") == 0){dataMap.put(month,json);analysisResultJson(json);return json;}else{System.err.println("调用聚合数据 万年历接口 error_code:"+json.getIntValue("error_code"));}}catch (Exception e){e.printStackTrace();}}return null;}/*** 解析近期假期 返回结果  存储特殊日期状态* @param json*/private static void analysisResultJson(JSONObject json) {JSONObject result = json.getJSONObject("result");JSONObject data = result.getJSONObject("data");JSONArray holiday_array = data.getJSONArray("holiday_array");for(int i=0;i<holiday_array.size();i++){JSONObject holiday = holiday_array.getJSONObject(i);JSONArray list = holiday.getJSONArray("list");for(int j=0;j<list.size();j++){JSONObject day = list.getJSONObject(j);String dateStr = day.getString("date"); //2021-1-2String status = day.getString("status");if(!dateStatus.containsKey(dateStr)){dateStatus.put(dateStr,Integer.valueOf(status));}}}}/*** 调用接口* @param url* @return* @throws Exception*/private static  String load(String url) throws Exception{URL restURL = new URL(url);/** 此处的urlConnection对象实际上是根据URL的请求协议(此处是http)生成的URLConnection类 的子类HttpURLConnection*/HttpURLConnection conn = (HttpURLConnection) restURL.openConnection();//请求方式conn.setRequestMethod("POST");//设置是否从httpUrlConnection读入,默认情况下是true; httpUrlConnection.setDoInput(true);conn.setDoOutput(true);//allowUserInteraction 如果为 true,则在允许用户交互(例如弹出一个验证对话框)的上下文中对此 URL 进行检查。conn.setAllowUserInteraction(false);BufferedReader bReader = new BufferedReader(new InputStreamReader(conn.getInputStream()));String line,resultStr="";while(null != (line=bReader.readLine())){resultStr +=line;}bReader.close();return resultStr;}/*** 获取日期 是否上班* @param date* @return 1:放假,2:上班*/public static Integer getDateStatus(Date date){String dateStr = dateSdf.format(date);if(dateStatus.containsKey(dateStr)){return dateStatus.get(dateStr);}else{getMonth(date);if(dateStatus.containsKey(dateStr)){return dateStatus.get(dateStr);}else{//查看是否是周六日 不是周六日  上班Calendar calendar = Calendar.getInstance();calendar.setTime(date);int week = calendar.get(Calendar.DAY_OF_WEEK);if(week ==1 || week ==7){return 1;}return 2;}}}public static void main(String[] args) {//1:放假,2:上班Calendar calendar = Calendar.getInstance();calendar.set(Calendar.MONTH,4);for(int i=1;i<=30;i++){calendar.set(Calendar.DATE,i);Integer status = getDateStatus(calendar.getTime());if(status == 1){System.out.println(dateSdf.format(calendar.getTime())+":放假");}else{System.out.println(dateSdf.format(calendar.getTime())+":上班");}}}
}

节假日 万年历 Api util相关推荐

  1. 判断日期是否为法定节假日的API接口与示例函数

    判断日期是否为法定节假日的API接口与示例函数 需要判定某日期是否为法定节假日,由于国家的节假日每年都在变动,所以使用接口判定是必要的.可惜的是,这样的接口并不多,在此汇总三个: http://too ...

  2. python万年历节气_万年历API接口_免费数据接口 - 极速数据

    package api.jisuapi.calendar; import api.util.HttpUtil; import net.sf.json.JSONArray; import net.sf. ...

  3. php根据当前日期判断法定节假日_判断日期是否为法定节假日的API接口与示例函数...

    需要判定某日期是否为法定节假日,由于国家的节假日每年都在变动,所以使用接口判定是必要的.可惜的是,这样的接口并不多,在此汇总三个: 前两个看起来是个人的,最后一个是聚合数据的万年历接口. 请注意,本文 ...

  4. 节假日读取接口_判断日期是否为法定节假日的API接口与示例函数

    需要判定某日期是否为法定节假日,由于国家的节假日每年都在变动,所以使用接口判定是必要的.可惜的是,这样的接口并不多,在此汇总三个: 前两个看起来是个人的,最后一个是聚合数据的万年历接口. 在我的小项目 ...

  5. 获取中国节假日信息api

    1.接口地址:http://api.goseek.cn/Tools/holiday?date=数字日期 2.返回数据:正常工作日对应结果为 0, 法定节假日对应结果为 1, 节假日调休补班对应的结果为 ...

  6. 今天出门你查老黄历了吗?包括万年历在内的超多免费可用 API 推荐(一)

    写在前面 老黄历告诉我,今天宜嫁娶,可是我对象呢? 上图是调用老黄历 API 接口的一个展示,用户可以通过这个接口查询一些日历信息,包括宜忌等,如果你也觉得好玩,不妨往下看看,我给你推荐更多好玩好用的 ...

  7. 日期调用API,查询是否是节假日

    日期调用API,查询是否是节假日 http://api.goseek.cn/Tools/holiday?date=20170721 工作日为0,周目休息日1,节假日2 工作日http://api.go ...

  8. 免费好用的节假日API——Java实现

    前段日子项目中需要使用的国家规定的节假日,而且还 ** 是内网,例如说: 每日xxx: 周末xxx: 工作日xxx: 每隔多少天xxx,连续持续多少天xxx(周一周二停.周三到周日xxx.可以设置为, ...

  9. 收藏 | 这100+个免费API,免了自己去爬的烦恼!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | ishxiao 来源 | blog.csdn. ...

最新文章

  1. Schema中elementFormDefault=qualified所起的作用
  2. 从纸钱包,带你走进贴心的BCH!
  3. cnn 反向传播推导_深度学习中的参数梯度推导(三)下篇
  4. 全国省市区县数据库脚本
  5. 计算机一级在线解析,2014年计算机一级考试MSOffice第三章考点解析 18
  6. 海贼王为什么画风突变_什么是突变测试?
  7. guava 并发_使用Guava对并发应用程序进行基于对象的微锁定
  8. jvm学习笔记(2)——java对象的内存布局
  9. mysql8.1改密码,mysql 8.0以上版本修改root密码的方法
  10. 风变编程python第一关_风变编程python学习心得
  11. 王道训练营3月11日
  12. python excel填充颜色_python实现xlwt xlrd 指定条件给excel行添加颜色
  13. 从程序员到项目经理(九):程序员加油站 — 再牛也要合群
  14. matlab设计误码率,通信原理课程设计报告 数字传输系统误码率测试器的matlab实现及性能分析...
  15. cannot load facet kotlin
  16. 台式计算机怎么加一个硬盘,台式电脑增加硬盘_台式电脑增加硬盘图解
  17. CoAP协议的常用开源代码实现
  18. 创意编程/小学组(4-6年级)-图形化创意
  19. File C:\Users\admin\Documents\WindowsPowerShell\profile.ps1 cannot be loaded because running scripts
  20. 许三多:浮躁社会的反义词

热门文章

  1. 虚拟内存--虚拟内存到物理内存的映射
  2. Python Class 重要基础知识篇
  3. 系统调用(三)——read/write函数
  4. mavon-editor 保存的html显示问题
  5. VMware推免费服务器版虚拟软件
  6. iconfont添加新图标_添加自定义图标(iconfont)
  7. EasyExcel导出详解
  8. System.ComponentModel.Win32Exception (0x80004005): 无效的窗口句柄。
  9. 威纶通组态屏对Codesys标签支持的局限性
  10. [JAVA毕业设计]高校教材征订管理系统源码获取和系统演示