话不多说,先上代码
怎么获取节假日
/**
* 获取节假日 并保存到数据库中
* @return
*/
public int getHoliday(){
HolidayClass hc = new HolidayClass();
List<String> list = new ArrayList<>();
Calendar a=Calendar.getInstance();
int httpArg = Integer.valueOf(a.get(Calendar.YEAR)); //得到当前年份
list.add(httpArg+"");
int month = Integer.valueOf(a.get(Calendar.MONTH)+1); //得到当前月份
//暂定12月可以更新下一年日历
if(month==12){
httpArg +=1;list.add(httpArg+"");
}
for (String s : list) { //遍历年
int num = hc.DELETE(s);//删除当前年数据
if(num<0){
return -1;//"数据删除失败!"
}
String json = request(s);
Map<String, Object> map = json1Map(json);
for (Map.Entry<String, Object> map1 : map.entrySet()) {
//System.out.println(map1.getValue()+"*"+map1.getKey());
String JJRBH = map1.getValue().toString();
String date1 = map1.getKey();
String DATE = httpArg+"-"+date1.substring(0,2)+"-"+date1.substring(2);
int num1 = hc.SaveHoliday(s ,JJRBH ,DATE);
if(num1<0){
return -2;//"数据更新失败!"
}
}
}
return 1;//"更新成功!"
}
// 打开连接获取指定年份节假日
public String request(String httpArg) {
String httpUrl = "http://tool.bitefu.net/jiari/vip.php";// 为他人开发的网上接口,可百度进行查阅具体说明
BufferedReader reader = null;
String result = null;
StringBuffer sbf = new StringBuffer();
httpUrl = httpUrl + "?d=" + httpArg + "&type=0&apikey=123456";//直接使用就可以try {
URL url = new URL(httpUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
InputStream is = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
String strRead = null;
while ((strRead = reader.readLine()) != null) {
sbf.append(strRead);
sbf.append("\r\n");
}
reader.close();
result = sbf.toString();
System.out.println("rsList===" + result);} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public Map<String, Object> json1Map(String jsonStr) {
Map<String, Object> map = new HashMap<>();
if (jsonStr != null && !"".equals(jsonStr)) {
// 最外层解析
JSONObject json = JSONObject.fromObject(jsonStr);
for (Object k : json.keySet()) {
Object v = json.get(k);
// 如果内层还是数组的话,继续解析
if (v instanceof JSONObject) {// 走的这条路
map.clear();
//System.out.println("第二次json字符串");
JSONObject child = (JSONObject) v;
for (Object stk : child.keySet()) {
Object value = child.get(stk);
//System.out.println("value===" + value);
if (value instanceof JSONObject) {
map.clear();
//System.out.println("第三次json字符串");
JSONObject cc = (JSONObject) value;
for (Object ss : cc.keySet()) {
Object vv = cc.get(ss);
//System.out.println("vvv===" + vv);
map.put(ss.toString(), vv.toString());
}
} else {
map.put(stk.toString(), value.toString());
}
}
} else {
map.put(k.toString(), v);
}
}
return map;
} else {
return null;
}
}
以上就是基本代码,可以参考,有问题也请大家多多指教。
应用场景主要用于请假,计算工作日等。具体问题具体分析。
唯一不足的就是需要更新数据库,获取到节假日,这一操作可能需要手动进行,或者定时每月执行一次。