package com.fage; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.wbi.util.Util; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import weaver.general.TimeUtil; import java.io.*; import java.math.BigDecimal; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.Period; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; import java.time.temporal.ChronoUnit; import java.text.DecimalFormat; import java.util.*; import org.apache.commons.codec.binary.Base64; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.nio.charset.StandardCharsets; public class DemoTest { public static void main(String[] args) { // 示例日期字符串 String startDateStr = "2025-05-21"; // // 解析日期 // LocalDate startDate = LocalDate.parse(startDateStr); // LocalDate endDate = LocalDate.now(); // // // 计算工龄(月份) // long monthsBetween = ChronoUnit.MONTHS.between(startDate, endDate); // // // 将月份转换为年并格式化为2位小数 // double years = (double) monthsBetween / 12; // DecimalFormat df = new DecimalFormat("0.00"); // 设置格式为2位小数 String formattedYears = calculateAge(startDateStr); // String kjshgl = "2.00"; // String endAge = String.valueOf(new BigDecimal(formattedYears).subtract(new BigDecimal(kjshgl))); // 输出结果 // System.out.println("工龄(年): " + formattedYears); // // System.out.println(getMonthStartStr(startDateStr,0)); // // System.out.println(getMonthByDateStr(startDateStr)); // System.out.println(getMonthEndByDateStr(startDateStr,0)); // // String currenttime = TimeUtil.getOnlyCurrentTimeString(); // // String ywrq = "2025-05-26"; // ywrq += "T"+currenttime; // // System.out.println(ywrq); // // System.out.println(ywrq.substring(0,7).replaceAll("-","")); // // String APP_SECRET = "YVBKbcEQSXlwcpOxjOGRhODWASSkzg"; // String data = System.currentTimeMillis() + "||" + APP_SECRET; // String IV = APP_SECRET.substring(APP_SECRET.length() - 16); // String key = APP_SECRET.substring(0, 16); // System.out.println(encryptData(data, key, IV)); // double ycqzss=149.08; // double yycqss=152.0; // double fdxjsc = 0.0; // double jrjbs=0.0; // double prjbss=0.0; // // double xxrjbs = ycqzss - fdxjsc - yycqss - jrjbs - prjbss; // System.out.println(xxrjbs); // // String dateStr1 = "2023-03-01"; // String dateStr2 = "2025-07-24"; // // DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // LocalDate date1 = LocalDate.parse(dateStr1, formatter); // LocalDate date2 = LocalDate.parse(dateStr2, formatter); // // long daysBetween = Math.abs(ChronoUnit.DAYS.between(date1, date2)); // System.out.println("相差天数: " + daysBetween); // String aaa = "2025-08-07"; // System.out.println("相差天数: " + addDateDay(aaa,-24)); // // String token = "X4eTEiMr-1pdUwi1c9vxTidpgSg8rhOGbl7GFPvG8465Kadur7e5KBjFl3FS5amfsls0nPpzA"; // // String applyId = "5dd8c3ca-b986-441f-ba66-12e63c841152"; // // String url = "http://openapi.italent.cn/RecruitV6/api/v1/Applicant/GetResumeByApplyId"; // // String result = httpGetRequestInfo(url,applyId,token); // // System.out.println("北森,简历接口返回 : " + result); // // JSONObject maindata_jsonObject = JSONObject.parseObject(result); // // String data = maindata_jsonObject.get("data").toString(); // JSONObject data_jsonObject = JSONObject.parseObject(data); // // JSONArray itemArray = data_jsonObject.getJSONArray("personProfile"); // for (int i = 0; i < itemArray.size(); i++) { // Map newmap = new HashMap<>(); // // JSONObject dataObject = itemArray.getJSONObject(i); // // String name = dataObject.get("name").toString(); // System.out.println("北森,name : " + name); // } // String a = "1999/02/12"; // a = a.replaceAll("/","-"); // System.out.println(a); // // // // String data = "{\n" + // "\"education\": [\n" + // "\t\t\t[\n" + // "\t\t\t\t{\n" + // "\t\t\t\t\t\"name\": \"_id\",\n" + // "\t\t\t\t\t\"value\": \"b1c310ec-e661-48a6-891c-5838c5e92231\",\n" + // "\t\t\t\t\t\"text\": \"b1c310ec-e661-48a6-891c-5838c5e92231\",\n" + // "\t\t\t\t\t\"downloadUrl\": null\n" + // "\t\t\t\t},\n" + // "\t\t\t\t{\n" + // "\t\t\t\t\t\"name\": \"EndDate\",\n" + // "\t\t\t\t\t\"value\": \"2025/07\",\n" + // "\t\t\t\t\t\"text\": \"2025/07\",\n" + // "\t\t\t\t\t\"downloadUrl\": null\n" + // "\t\t\t\t},\n" + // "\t\t\t\t{\n" + // "\t\t\t\t\t\"name\": \"EducationLevel\",\n" + // "\t\t\t\t\t\"value\": \"1\",\n" + // "\t\t\t\t\t\"text\": \"本科\",\n" + // "\t\t\t\t\t\"downloadUrl\": null\n" + // "\t\t\t\t},\n" + // "\t\t\t\t{\n" + // "\t\t\t\t\t\"name\": \"StartDate\",\n" + // "\t\t\t\t\t\"value\": \"2021/09\",\n" + // "\t\t\t\t\t\"text\": \"2021/09\",\n" + // "\t\t\t\t\t\"downloadUrl\": null\n" + // "\t\t\t\t},\n" + // "\t\t\t\t{\n" + // "\t\t\t\t\t\"name\": \"SchoolName\",\n" + // "\t\t\t\t\t\"value\": \"10235\",\n" + // "\t\t\t\t\t\"text\": \"大庆师范学院\",\n" + // "\t\t\t\t\t\"downloadUrl\": null\n" + // "\t\t\t\t},\n" + // "\t\t\t\t{\n" + // "\t\t\t\t\t\"name\": \"MajorName\",\n" + // "\t\t\t\t\t\"value\": \"钢琴表演\",\n" + // "\t\t\t\t\t\"text\": \"钢琴表演\",\n" + // "\t\t\t\t\t\"downloadUrl\": null\n" + // "\t\t\t\t}\n" + // "\t\t\t]\n" + // "\t\t]" + // "}"; // JSONObject data_jsonObject = JSONObject.parseObject(data); // JSONArray jyjlArray = data_jsonObject.getJSONArray("education"); // for (int i = 0; i < jyjlArray.size(); i++) { // JSONArray dataArray = jyjlArray.getJSONArray(i); // for (int j = 0; j < dataArray.size(); j++) { // JSONObject dataObject = dataArray.getJSONObject(j); // System.out.println(dataObject); // String name = dataObject.get("name").toString(); // String value = dataObject.get("value").toString(); // String text = dataObject.get("text").toString(); // } // } String a = "1991-10-07"; System.out.println(a.substring(0,4)); System.out.println(a.substring(5,7)); System.out.println(a.substring(8,10)); System.out.println(a.substring(5,10)); // 假设入职日期是2020年1月1日 LocalDate hireDate = LocalDate.of(2023, 8, 30); // 获取当前日期 LocalDate currentDate = LocalDate.now(); // 计算司龄(总月份数除以12) double monthsBetween = Math.abs(Period.between(hireDate, currentDate).getMonths()) + 12 * Math.abs(Period.between(hireDate, currentDate).getYears()); double serviceYears = monthsBetween / 12.0; // 注意这里已经是总月份数除以12的结果,可以直接格式化输出 // 使用DecimalFormat格式化输出,保留两位小数 DecimalFormat df = new DecimalFormat("#.##"); // 注意这里的格式化符号使用的是英文的点号和井号,而不是中文的井号和井号。 String formattedServiceYears = df.format(serviceYears); System.out.println("司龄(保留两位小数): " + formattedServiceYears + " 年"); String date1 = "2023-08-30"; String date2 = "2025-08-29"; int days = getDays(date1,date2); System.out.println("相差天数:"+ days); } /** * 发送 http get 请求,参数以原生字符串进行提交 * @param urll * @param applyId * @param token * @return */ public static String httpGetRequestInfo(String urll, String applyId, String token){ String result = ""; HttpURLConnection conn = null; InputStream in=null; BufferedReader reader=null; int statusCode = 0; try { StringBuilder urlBuilder = new StringBuilder(urll); urlBuilder.append("?"); urlBuilder.append("applyId").append("=").append(URLEncoder.encode(applyId, "UTF-8")); System.out.println(" urlParameters : " + urlBuilder); URL url = new URL(urlBuilder.toString()); conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("Authorization", "Bearer "+ token); conn.setDoOutput(true); conn.setDoInput(true); conn.setUseCaches(false); statusCode = conn.getResponseCode(); System.out.println(statusCode); if (statusCode == 200) { in = conn.getInputStream(); //通过InputStreamReader将字节流转换成字符串,在通过BufferedReader将字符流转换成自带缓冲流 reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)); StringBuilder sb = new StringBuilder(); String line = null; //按行读取 while ((line = reader.readLine()) != null) { sb.append(line); } result = sb.toString(); System.out.println(result); } } catch (Exception e) { e.printStackTrace(); }finally{ if (conn != null) { conn.disconnect(); } if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public static String addDateDay(String daytime, int day){ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date date = null; try { date = format.parse(daytime); if (date == null){ return ""; } Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.DAY_OF_MONTH, day);// 加一天 date = cal.getTime(); cal = null; return format.format(date); } catch (Exception ex) { ex.printStackTrace(); } return ""; } /** * 计算两个时间字符串日期的相差天数 * * @param date1 字符串时间1 * @param date2 字符串时间2 * @return 相差时间 */ public static int getDays(String date1, String date2) { if (!"".equals(date1) && !"".equals(date2)) { String date1Arr[] = date1.split("-"); String date2Arr[] = date2.split("-"); Calendar cal1 = Calendar.getInstance(); cal1.set(Integer.parseInt(date1Arr[0]), Integer.parseInt(date1Arr[1]) - 1, Integer.parseInt(date1Arr[2])); Date date1Obj = cal1.getTime(); Calendar cal2 = Calendar.getInstance(); cal2.set(Integer.parseInt(date2Arr[0]), Integer.parseInt(date2Arr[1]) - 1, Integer.parseInt(date2Arr[2])); Date date2Obj = cal2.getTime(); return calculateDays(date1Obj, date2Obj); } return 0; } /** * 计算天数 * @param date1 日期 * @param date2 日期 * @return 天数 */ public static int calculateDays(Date date1, Date date2) { Calendar cal1 = Calendar.getInstance(); cal1.setTime(date1); Calendar cal2 = Calendar.getInstance(); cal2.setTime(date2); int day1 = cal1.get(Calendar.DAY_OF_YEAR); int day2 = cal2.get(Calendar.DAY_OF_YEAR); int year1 = cal1.get(Calendar.YEAR); int year2 = cal2.get(Calendar.YEAR); if (year1 != year2) {//不同 年 int timeDistance = 0; if (year1 < year2) {//后面日期年大于前面日期 for (int i = year1; i < year2; i++) { if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {//闰年 timeDistance += 366; } else {//不是闰年 timeDistance += 365; } } } else { for (int i = year2; i < year1; i++) { if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {//闰年 timeDistance += 366; } else {//不是闰年 timeDistance += 365; timeDistance = 0 - timeDistance; } } } return timeDistance + (day2 - day1); } else {//同一年 return day2 - day1; } } /** * * @param data 需要加密的数据 * @param key 秘钥 * @param IV 偏移量 * @return */ private static String encryptData(String data, String key, String IV) { try { //算法/模式/填充模式 AES/CBC/PKCS5Padding Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); byte[] dataBytes = data.getBytes(StandardCharsets.UTF_8); int plaintextLength = dataBytes.length; byte[] plaintext = new byte[plaintextLength]; System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length); SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES"); IvParameterSpec ivspec = new IvParameterSpec(IV.getBytes()); cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec); byte[] encrypted = cipher.doFinal(plaintext); //输出内容,Base64处理 return new String(Base64.encodeBase64(encrypted)); } catch (Exception e) { return null; } } /** * 根据日期字符串的月末 * * @param dateStr 日期字符串 * @param num 上下某月 * @return 月初月末集合 */ public static String getMonthEndByDateStr(String dateStr, int num) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String res = ""; try { Date date = sdf.parse(dateStr); Calendar c1 = Calendar.getInstance(); c1.setTime(date); c1.add(Calendar.MONTH, num); c1.set(Calendar.DAY_OF_MONTH, 1); String start = sdf.format(c1.getTime()); Calendar c2 = Calendar.getInstance(); Date dateTemp = sdf.parse(start); c2.setTime(dateTemp); c2.add(Calendar.MONTH, 1); c2.set(Calendar.DAY_OF_MONTH, 0); res = sdf.format(c2.getTime()); } catch (Exception e) { e.printStackTrace(); } return res; } public static String calculateAge(String birthdate) { String result = "0"; try { // 解析日期 LocalDate startDate = LocalDate.parse(birthdate); LocalDate endDate = LocalDate.now(); // 计算工龄(月份) long monthsBetween = ChronoUnit.MONTHS.between(startDate, endDate); // 将月份转换为年并格式化为2位小数 double years = (double) monthsBetween / 12; DecimalFormat df = new DecimalFormat("0.00"); // 设置格式为2位小数 result = df.format(years); }catch (Exception e){ e.printStackTrace(); } return result; } }