節假日api--java呼叫與獲取資料
阿新 • • 發佈:2018-11-05
獲取指定日期的節假日資訊
1、介面地址:http://api.goseek.cn/Tools/holiday?date=數字日期,支援https協議。2、返回資料:工作日對應結果為 0, 休息日對應結果為 1, 節假日對應的結果為 2
3、節假日資料說明:本介面包含2017年起的中國法定節假日資料,資料來源國務院釋出的公告,每年更新1次,確保資料最新
4、示例: http://api.goseek.cn/Tools/holiday?date=20180501
java呼叫: 業務需求:我需要提前2周檢查節假日,如果有節假日,就每個user都生成一張節日券,且相同節日
// 節日券 public void addCouponToAllUser() { List<String> valueList = new ArrayList<>(); List<String> dayList = new ArrayList<>(); for(int i=0; i<14; i++) { BufferedReader in = null; StringBuffer sb = new StringBuffer(); try{ // 提前14天判斷節假日 SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd"); Date date=new Date(); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DAY_OF_MONTH, + i); String after14 = sdf.format(calendar.getTime()); String dayForTest = sdf2.format(calendar.getTime()); URL url = new URL("http://api.goseek.cn/Tools/holiday?date="+after14); in = new BufferedReader(new InputStreamReader(url.openStream(),"utf-8")); String str = null; while((str = in.readLine()) != null) { sb.append( str ); } //json串轉化為json物件 JSONObject json = JSONObject.fromString(sb.toString()); String value = json.get("data").toString(); valueList.add(value); if (value.equals("2")) { dayList.add(dayForTest); } } catch (Exception ex) { } finally{ try{ if(in!=null) { in.close(); } }catch(IOException ex) { } } } if (dayList.size() > 0) { List<Integer> idList = dhyxxDao.queryId(); for (Integer userId : idList) { // 判斷使用者是否已經擁有相同節日券 List<Integer> rows = dcouponsDao.queryHaveHoliday(userId, "節日券", dayList.get(0), dayList.get(dayList.size()-1)); if (rows.size() > 0) { return; } dcouponsDao.addCouponToAllUser(userId,"滿1500減450",450,"節日券",dayList.get(0),dayList.get(dayList.size()-1),true,false,false); } } }