From e16302f9d475c7cc4dd18c5abf1a23cb5502e362 Mon Sep 17 00:00:00 2001 From: whyclxw <810412026@qq.com> Date: 星期三, 28 五月 2025 14:57:56 +0800 Subject: [PATCH] 密码验证加- --- src/main/java/com/whyc/util/DateUtil.java | 251 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 240 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/whyc/util/DateUtil.java b/src/main/java/com/whyc/util/DateUtil.java index e10bbe6..361414e 100644 --- a/src/main/java/com/whyc/util/DateUtil.java +++ b/src/main/java/com/whyc/util/DateUtil.java @@ -3,6 +3,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; +import java.util.stream.Collectors; /** * @Description : 鏃堕棿宸ュ叿绫� @@ -14,6 +15,38 @@ public static SimpleDateFormat YYYY_MM_DD_HH_MM_SS_UNION=new SimpleDateFormat("yyyyMMddHHmmss"); public static SimpleDateFormat YYYY_MM_DD=new SimpleDateFormat("yyyy-MM-dd"); public static SimpleDateFormat YYYY_MM=new SimpleDateFormat("yyyy-MM"); + public static SimpleDateFormat YYYY_MM_TABLE=new SimpleDateFormat("yyyy_MM"); + + public static int compare(String date1Str,String date2Str) throws ParseException { + Date date1 = YYYY_MM_DD_HH_MM_SS.parse(date1Str); + Date date2 = YYYY_MM_DD_HH_MM_SS.parse(date2Str); + if(date1.compareTo(date2)>0){ + return 1; + }else if(date1.compareTo(date2) == 0){ + return 0; + }else{ + return -1; + } + } + + public static Date getMaxTime(String date1Str,String date2Str,String date3Str) { + try { + Date date1 = YYYY_MM_DD_HH_MM_SS.parse(date1Str); + Date date2 = YYYY_MM_DD_HH_MM_SS.parse(date2Str); + Date date3 = YYYY_MM_DD_HH_MM_SS.parse(date3Str); + + Date maxTime = date1; + if (maxTime.compareTo(date2) < 0) { + maxTime = date2; + } + if (maxTime.compareTo(date3) < 0) { + maxTime = date3; + } + return maxTime; + }catch (ParseException e){ + return null; + } + } public static List<List<Date>> getMonthTime(Date startTimeDate,Date endTimeDate) throws ParseException { List<List<Date>> timeList = new LinkedList<>(); @@ -37,7 +70,8 @@ Calendar dateTemp = Calendar.getInstance(); for (int i = 0; i < len; i++) { List<Date> SEList = new LinkedList<>(); - dateTemp.setTime(YYYY_MM_DD_HH_MM_SS.parse(startY+"-"+startM+"-01 00:00:00")); + //dateTemp.setTime(YYYY_MM_DD_HH_MM_SS.parse(startY+"-"+startM+"-01 00:00:00")); + dateTemp.setTime(ThreadLocalUtil.parse(startY+"-"+startM+"-01 00:00:00",1)); Date recordTime,recordTime1; dateTemp.add(Calendar.MONTH,i); @@ -157,11 +191,13 @@ */ public static List<String> getMonthList(String startTimeStr,String endTimeStr) throws ParseException { Calendar startTimeCalendar = Calendar.getInstance(); - Date startTime = DateUtil.YYYY_MM_DD_HH_MM_SS.parse(startTimeStr); + //Date startTime = DateUtil.YYYY_MM_DD_HH_MM_SS.parse(startTimeStr); + Date startTime = ThreadLocalUtil.parse(startTimeStr,1); startTimeCalendar.setTime(startTime); Calendar endTimeCalendar = Calendar.getInstance(); - Date endTime = DateUtil.YYYY_MM_DD_HH_MM_SS.parse(endTimeStr); + //Date endTime = DateUtil.YYYY_MM_DD_HH_MM_SS.parse(endTimeStr); + Date endTime = ThreadLocalUtil.parse(endTimeStr,1); endTimeCalendar.setTime(endTime); /*String[] startTimeSplit = startTimeStr.split("-"); @@ -330,6 +366,93 @@ return result; } + /** + * 鍦ㄥ垎琛ㄧ殑鎯呭喌涓嬩娇鐢�,鎸夋湀鍒嗚〃,鏌ヨ闇�瑕佸垏鍓叉煡璇娇鐢� 鏃堕棿鍊掑簭 + * <p> + * 鏍规嵁浼犲叆鐨勮捣姝㈡椂闂�,鎸夌収骞村垏鍓叉垚涓嶅悓鏃堕棿娈� + * + * @param startTime 2023-01-01 10:00:00 + * @param endTime 2023-05-01 10:10:10 + * @return 绀轰緥 + * { + * 2023_04=[Fri Dec 25 14:12:22 CST 2020, Thu Dec 31 23:59:59 CST 2020] + * 2023_03=[Fri Jan 01 00:00:00 CST 2021, Fri Dec 31 23:59:59 CST 2021], + * 2023_02=[Sat Jan 01 00:00:00 CST 2022, Sat Dec 31 23:59:59 CST 2022], + * 2023_01=[Sun Jan 01 00:00:00 CST 2023, Tue Jan 24 16:45:22 CST 2023], + * + * } + * 浣跨敤鏂规硶: + * 鏍规嵁杩斿洖鐨勭涓�涓暟鎹�,濡傛灉瀛樺湪琛�,鍒欐煡璇㈢瓫閫夋潯浠朵负>=杈撳叆鐨勮捣濮嬫椂闂�;涓嶅瓨鍦ㄥ垯寮冪敤杈撳叆鐨勮捣濮嬫椂闂� + * 鏍规嵁杩斿洖鐨勬渶鍚庝釜鏁版嵁,濡傛灉琛ㄥ瓨鍦�,鍒欐煡璇㈢瓫閫夋潯浠朵负<=杈撳叆鐨勭粓姝㈡椂闂�;涓嶅瓨鍦ㄥ垯寮冪敤杈撳叆鐨勭粓姝㈡椂闂� + * 杩斿洖鐨勯潪绗竴鏈�鍚庢暟鎹�,鏌ヨ鍏ㄨ〃 + */ + public static Map<String,List<Date>> getMonthListDesc(Date startTime,Date endTime) throws ParseException { + Map<String,List<Date>> result = new LinkedHashMap<>(); + Calendar startTimeC = Calendar.getInstance(); + startTimeC.setTime(startTime); + int startYear = startTimeC.get(Calendar.YEAR); + int startMonth = startTimeC.get(Calendar.MONTH); + + Calendar endTimeC = Calendar.getInstance(); + endTimeC.setTime(endTime); + int endYear = endTimeC.get(Calendar.YEAR); + int endMonth = endTimeC.get(Calendar.MONTH); + + //鐩稿樊鐨勬湀浠� + int monthCount = endYear*12+endMonth-(startYear*12+startMonth); + + for (int i = monthCount; i >= 0; i--) { + List<Date> dateList = new LinkedList<>(); + if(monthCount == 0 ){ //璧锋鏃堕棿娌℃湁璺ㄦ湀 + dateList.add(startTime); + dateList.add(endTime); + } + else if(i==0){ //绗竴鏈� + dateList.add(startTime); + + Calendar instance = Calendar.getInstance(); + instance.setTime(startTime); + instance.set(Calendar.DAY_OF_MONTH,instance.getActualMaximum(Calendar.DAY_OF_MONTH)); + instance.set(Calendar.HOUR_OF_DAY,instance.getActualMaximum(Calendar.HOUR_OF_DAY)); + instance.set(Calendar.MINUTE,instance.getActualMaximum(Calendar.MINUTE)); + instance.set(Calendar.SECOND,instance.getActualMaximum(Calendar.SECOND)); + dateList.add(instance.getTime()); + } + else if(i== monthCount){ //灏炬湀 + Calendar instance = Calendar.getInstance(); + instance.setTime(endTime); + instance.set(Calendar.DAY_OF_MONTH,instance.getActualMinimum(Calendar.DAY_OF_MONTH)); + instance.set(Calendar.HOUR_OF_DAY,instance.getActualMinimum(Calendar.HOUR_OF_DAY)); + instance.set(Calendar.MINUTE,instance.getActualMinimum(Calendar.MINUTE)); + instance.set(Calendar.SECOND,instance.getActualMinimum(Calendar.SECOND)); + dateList.add(instance.getTime()); + + dateList.add(endTime); + }else{ + Calendar instance = Calendar.getInstance(); + instance.setTime(startTime); + instance.add(Calendar.MONTH,i); + instance.set(Calendar.DAY_OF_MONTH,instance.getActualMinimum(Calendar.DAY_OF_MONTH)); + instance.set(Calendar.HOUR_OF_DAY,instance.getActualMinimum(Calendar.HOUR_OF_DAY)); + instance.set(Calendar.MINUTE,instance.getActualMinimum(Calendar.MINUTE)); + instance.set(Calendar.SECOND,instance.getActualMinimum(Calendar.SECOND)); + dateList.add(instance.getTime()); + + Calendar instance2 = Calendar.getInstance(); + instance2.setTime(startTime); + instance2.add(Calendar.MONTH,i); + instance2.set(Calendar.DAY_OF_MONTH,instance2.getActualMaximum(Calendar.DAY_OF_MONTH)); + instance2.set(Calendar.HOUR_OF_DAY,instance2.getActualMaximum(Calendar.HOUR_OF_DAY)); + instance2.set(Calendar.MINUTE,instance2.getActualMaximum(Calendar.MINUTE)); + instance2.set(Calendar.SECOND,instance2.getActualMaximum(Calendar.SECOND)); + dateList.add(instance2.getTime()); + + } + //result.put(DateUtil.YYYY_MM_TABLE.format(dateList.get(0)),dateList); + result.put(ThreadLocalUtil.format(dateList.get(0),2),dateList); + } + return result; + } /** * 鏌ヨ浣跨敤鏃�,闇�瑕佸鐞� 榛樿琛ㄦ煡璇㈢殑闂 鍊掑簭 @@ -422,15 +545,121 @@ return yearTimeDescMap; } - public static void main(String[] args) throws ParseException { - Date d1 = YYYY_MM_DD_HH_MM_SS.parse("2020-12-25 14:12:22"); - Date d2 = YYYY_MM_DD_HH_MM_SS.parse("2022-12-29 09:12:22"); - Map<String, List<Date>> yearListForSubTables = getQueryTimeForSubTablesDesc(d1, d2); - Set<String> strings = yearListForSubTables.keySet(); - Set<Map.Entry<String, List<Date>>> entries = yearListForSubTables.entrySet(); - for (Map.Entry<String, List<Date>> entry : entries) { - System.out.println(entry); + /** + * 鎸夊勾鍒掑垎 + * 浼樺寲getQueryTimeForSubTablesDesc,寰呮祴璇� + * 鏇存柊default琛ㄦ槸鍚︽煡璇㈢殑閫昏緫,鏀箌|涓�&& + * + */ + public static Map<String,List<Date>> getQueryTimeForSubTablesDesc2(Date startTimeDate,Date endTimeDate) throws ParseException { + //鏍规嵁绛涢�夌殑鏃堕棿娈�,鏌ヨ鍑虹鍚堣姹傜殑鍚勫垎琛ㄨ褰曟暟 + //棣栧厛,濡傛灉褰撳墠鏃堕棿瓒呰繃7鏈�,榛樿琛ㄤ腑鍙湁鏈勾搴︾殑;濡傛灉娌¤秴杩�7鏈�,榛樿琛ㄨ繕瀛樺湪涓婁竴骞村害鐨勮褰� + Calendar now = Calendar.getInstance(); + if(endTimeDate.compareTo(now.getTime())>0){ //鏍¢獙浼樺寲鏈�澶ф煡璇㈡椂闂� + endTimeDate = now.getTime(); } + Calendar timeBefore7Month = Calendar.getInstance(); + timeBefore7Month.add(Calendar.MONTH,-7); + + LinkedHashMap<String,List<Date>> yearTimeMap = (LinkedHashMap<String, List<Date>>) DateUtil.getYearListDesc(startTimeDate, endTimeDate); + Map<String,List<Date>> yearTimeDescMap = new LinkedHashMap<>(); + boolean existDefaultYear = false; + //鏌ヨ鐨勫紑濮嬫椂闂� 灏忎簬鐜板湪 + //鏌ヨ鐨勭粨鏉熸椂闂� 澶т簬 涓冧釜鏈堝墠 + if(startTimeDate.before(now.getTime()) && endTimeDate.after(timeBefore7Month.getTime())){ + List<Date> defaultDateList = new LinkedList<>(); + defaultDateList.add(startTimeDate); + defaultDateList.add(endTimeDate); + + yearTimeMap.put("default",defaultDateList); + existDefaultYear = true; + } + //璋冩暣涓嬮『搴�,灏哾efault璋冩暣鍒伴浣� + if(existDefaultYear){ + List<Date> defaultTimeList = yearTimeMap.get("default"); + yearTimeDescMap.put("default",defaultTimeList); + } + Set<String> yearSet = yearTimeMap.keySet(); + for (String year : yearSet) { + if(!year.equals("default")){ + yearTimeDescMap.put(year,yearTimeMap.get(year)); + } + } + + return yearTimeDescMap; + } + + /** + * 鎸夋湀鍒掑垎,鏃堕棿鍊掑簭 + * 鍦ㄥ師鏉ユ寜璧锋鏃堕棿鑾峰彇鏈堜唤鍒掑垎闆嗗悎鐨勫熀纭�涓�,鍔犲叆瀹為檯瀛愯〃閫昏緫,褰撳墠鏈堝唴鐨�,鍦╠efault琛� + * */ + public static Map<String,List<Date>> getQueryTimeForSubTablesByMonthDesc(Date startTimeDate,Date endTimeDate) throws ParseException { + //鏍规嵁绛涢�夌殑鏃堕棿娈�,鏌ヨ鍑虹鍚堣姹傜殑鍚勫垎琛ㄨ褰曟暟 + //棣栧厛,濡傛灉褰撳墠鏃堕棿瓒呰繃7鏈�,榛樿琛ㄤ腑鍙湁鏈勾搴︾殑;濡傛灉娌¤秴杩�7鏈�,榛樿琛ㄨ繕瀛樺湪涓婁竴骞村害鐨勮褰� + Calendar now = Calendar.getInstance(); + if(endTimeDate.compareTo(now.getTime())>0){ //鏍¢獙浼樺寲鏈�澶ф煡璇㈡椂闂� + endTimeDate = now.getTime(); + } + LinkedHashMap<String,List<Date>> yearTimeMap = (LinkedHashMap<String, List<Date>>) DateUtil.getMonthListDesc(startTimeDate, endTimeDate); + Map<String,List<Date>> yearTimeDescMap = new LinkedHashMap<>(); + boolean existDefaultYear = false; + //鏌ヨ鐨勭粨鏉熸椂闂� 鍦ㄥ綋鏈�,鍒欐湁default琛� + //鍚屾椂,鎶瑰幓鏈堜唤闆嗗悎閲岀殑褰撴湀 + //if(DateUtil.YYYY_MM_TABLE.format(endTimeDate).equals(DateUtil.YYYY_MM_TABLE.format(now.getTime()))){ + if(ThreadLocalUtil.format(endTimeDate,2).equals(ThreadLocalUtil.format(now.getTime(),2))){ + List<Date> defaultDateList = new LinkedList<>(); + defaultDateList.add(startTimeDate); + defaultDateList.add(endTimeDate); + + yearTimeMap.put("default",defaultDateList); + existDefaultYear = true; + + //yearTimeMap.remove(DateUtil.YYYY_MM_TABLE.format(endTimeDate)); + yearTimeMap.remove(ThreadLocalUtil.format(endTimeDate,2)); + } + //璋冩暣涓嬮『搴�,灏哾efault璋冩暣鍒伴浣� + if(existDefaultYear){ + List<Date> defaultTimeList = yearTimeMap.get("default"); + yearTimeDescMap.put("default",defaultTimeList); + } + Set<String> yearSet = yearTimeMap.keySet(); + for (String year : yearSet) { + if(!year.equals("default")){ + yearTimeDescMap.put(year,yearTimeMap.get(year)); + } + } + + return yearTimeDescMap; + } + + + public static void main(String[] args) throws ParseException { + //Date d1 = YYYY_MM_DD_HH_MM_SS.parse("2023-01-22 14:12:22"); + //Date d2 = YYYY_MM_DD_HH_MM_SS.parse("2023-08-24 16:45:22"); + //Map<String, List<Date>> monthListDesc = getQueryTimeForSubTablesByMonthDesc(d1, d2); + // + //Set<Map.Entry<String, List<Date>>> entries = monthListDesc.entrySet(); + //for (Map.Entry<String, List<Date>> entry : entries) { + // System.out.println(entry); + //} + //Map<String,String> map = new HashMap<>(); + //map.put("2022_01",""); + //map.put("2022_02",""); + //map.put("2022_10",""); + //map.put("2022_12",""); + //map.put("2021_03",""); + //map.put("2023_01",""); + //map.put("2023_05",""); + //map.put("2021_10",""); + //Set<String> keySet = map.keySet(); + //List<String> keySetDesc = keySet.stream().sorted(Comparator.comparing(String::hashCode).reversed()).collect(Collectors.toList()); + String t1 = "2024-01-25 12:22:29"; + String t2 = "2024-01-25 12:32:24"; + String t3 = "2024-01-25 12:42:26"; + Date maxTime = getMaxTime(t1, t2, t3); + System.out.println(maxTime.toString()); + + } } -- Gitblit v1.9.1