| package com.xzx.gc.util;  | 
|   | 
| import cn.hutool.core.convert.Convert;  | 
| import cn.hutool.core.lang.Snowflake;  | 
| import cn.hutool.core.util.IdUtil;  | 
| import cn.hutool.crypto.symmetric.SymmetricAlgorithm;  | 
| import cn.hutool.crypto.symmetric.SymmetricCrypto;  | 
| import com.xzx.gc.util.enums.EvaluationLabelType;  | 
| import org.springframework.stereotype.Service;  | 
|   | 
| import java.beans.BeanInfo;  | 
| import java.beans.Introspector;  | 
| import java.beans.PropertyDescriptor;  | 
| import java.io.UnsupportedEncodingException;  | 
| import java.lang.reflect.Method;  | 
| import java.text.ParseException;  | 
| import java.text.ParsePosition;  | 
| import java.text.SimpleDateFormat;  | 
| import java.util.*;  | 
| import java.util.regex.Pattern;  | 
|   | 
| @Service  | 
| public  class DateUtil {  | 
|   | 
|   | 
|   | 
|     public static List<Map<String,String>> query12WeekStartTimeAndEndTime(){  | 
|         List<Map<String, Date>> list = new ArrayList<>();  | 
|         for(int i = 0, h = 7; i <= 12; i++){  | 
|             list.add(getLastWeek(h * i));  | 
|         }  | 
|   | 
|         List<Map<String, String>> result = new ArrayList<>();  | 
|         for(Map<String, Date> map : list){  | 
|             Map<String,String> resultMap = new HashMap<>();  | 
|             String startTime = cn.hutool.core.date.DateUtil.formatDate(map.get("monday"))+" 00:00:00";  | 
|             String endTime = cn.hutool.core.date.DateUtil.formatDate(map.get("sunday"))+" 23:59:59";  | 
|             resultMap.put("startTime",startTime);  | 
|             resultMap.put("endTime",endTime);  | 
|             result.add(resultMap);  | 
|         }  | 
|         return result;  | 
|     }  | 
|     public static Map<String, Date> getLastWeek(int days) {  | 
|         Map<String, Date> map = new HashMap<String, Date>();  | 
|         Calendar cal = Calendar.getInstance();  | 
|         int n = cal.get(Calendar.DAY_OF_WEEK) - 1;  | 
|         if (n == 0) {  | 
|             n = 7;  | 
|         }  | 
|         // 上周一的日期  | 
|         cal.add(Calendar.DATE, -(days + (n - 1)));  | 
|         Date monday = cal.getTime();  | 
|         map.put("monday", monday);  | 
|   | 
|         cal.add(Calendar.DATE, 1);  | 
|         Date tuesday = cal.getTime();  | 
|         map.put("tuesday", tuesday);  | 
|   | 
|         cal.add(Calendar.DATE, 1);  | 
|         Date wednesday = cal.getTime();  | 
|         map.put("wednesday", wednesday);  | 
|   | 
|         cal.add(Calendar.DATE, 1);  | 
|         Date thursday = cal.getTime();  | 
|         map.put("thursday", thursday);  | 
|   | 
|         cal.add(Calendar.DATE, 1);  | 
|         Date friday = cal.getTime();  | 
|         map.put("friday", friday);  | 
|   | 
|         cal.add(Calendar.DATE, 1);  | 
|         Date saturday = cal.getTime();  | 
|         map.put("saturday", saturday);  | 
|   | 
|         cal.add(Calendar.DATE, 1);  | 
|         Date sunday = cal.getTime();  | 
|         map.put("sunday", sunday);  | 
|         return map;  | 
|     }  | 
|   | 
|   | 
|     public static List<Map<String,String>> query12MonthStartTimeAndEndTime() {  | 
|         List<Map<String,String>> list = new ArrayList<>();  | 
|         String[] latest12Month = getLatest12Month();  | 
|         for(String s : latest12Month){  | 
|             Map<String, String> m = new HashMap<>();  | 
|             m.put("startTime", s + "-01 00:00:00");  | 
|             m.put("endTime", s + "-31 23:59:59");  | 
|             list.add(m);  | 
|         }  | 
|   | 
|   | 
|         for(int i=0;i<list.size();i++){  | 
|             for(int j=0;j<list.size()-i-1;j++){  | 
|                 if(list.get(j).get("startTime").compareTo(list.get(j+1).get("startTime"))<0){  | 
|                     Map<String,String> r=list.get(j);  | 
|                     list.set(j, list.get(j+1));  | 
|                     list.set(j+1, r);  | 
|                 }  | 
|             }  | 
|         }  | 
|         return list;  | 
|     }  | 
|   | 
|     public static String fillZero(int i){  | 
|         String month = "";  | 
|         if(i<10){  | 
|             month = "0" + i;  | 
|         }else{  | 
|             month = String.valueOf(i);  | 
|         }  | 
|         return month;  | 
|     }  | 
|   | 
|     public static String[] getLatest12Month(){  | 
|         String[] latest12Months = new String[12];  | 
|         Calendar cal = Calendar.getInstance();  | 
|         //要先+1,才能把本月的算进去  | 
|         cal.set(Calendar.MONTH, cal.get(Calendar.MONTH)+1);  | 
|         for(int i=0; i<12; i++){  | 
|             //逐次往前推1个月  | 
|             cal.set(Calendar.MONTH, cal.get(Calendar.MONTH)-1);  | 
|             latest12Months[11-i] = cal.get(Calendar.YEAR)+ "-" +fillZero(cal.get(Calendar.MONTH)+1);  | 
|         }  | 
|         return latest12Months;  | 
|     }  | 
|   | 
|   | 
|   | 
|   | 
|     /**  | 
|      *字符串的日期格式的计算  | 
|      */  | 
|     public static int daysBetween(String smdate,String bdate) throws ParseException{  | 
|         SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");  | 
|         Calendar cal = Calendar.getInstance();  | 
|         cal.setTime(sdf.parse(smdate));  | 
|         long time1 = cal.getTimeInMillis();  | 
|         cal.setTime(sdf.parse(bdate));  | 
|         long time2 = cal.getTimeInMillis();  | 
|         long between_days=(time2-time1)/(1000*3600*24);  | 
|   | 
|         return Integer.parseInt(String.valueOf(between_days));  | 
|     }  | 
|   | 
|     public static boolean isSorted(List<String> listOfStrings, int index) {  | 
|         if (index < 2) {  | 
|             return true;  | 
|         } else if (listOfStrings.get(index - 2).compareTo(listOfStrings.get(index - 1)) > 0) {  | 
|             System.out.println(listOfStrings.get(index - 2)+"============"+listOfStrings.get(index - 1));  | 
|             return false;  | 
|         } else {  | 
|             return isSorted(listOfStrings, index - 1);  | 
|         }  | 
|     }  | 
|   | 
|     public static int getCaseByType(String type){  | 
|         if(EvaluationLabelType.ONE_TYPE.equals(type)){  | 
|             return 1;  | 
|         }else if(EvaluationLabelType.TWO_TYPE.equals(type)){  | 
|             return 2;  | 
|         }else if(EvaluationLabelType.THREE_TYPE.equals(type)){  | 
|             return 3;  | 
|         }else if(EvaluationLabelType.FOUR_TYPE.equals(type)){  | 
|             return 4;  | 
|         }else if(EvaluationLabelType.FIVE_TYPE.equals(type)){  | 
|             return 5;  | 
|         }else if(EvaluationLabelType.SIX_TYPE.equals(type)){  | 
|             return 6;  | 
|         }else if(EvaluationLabelType.SENVEN_TYPE.equals(type)){  | 
|             return 7;  | 
|         }else if(EvaluationLabelType.EIGHT_TYPE.equals(type)){  | 
|             return 8;  | 
|         }else if(EvaluationLabelType.NINE_TYPE.equals(type)){  | 
|             return 9;  | 
|         }else if(EvaluationLabelType.TEN_TYPE.equals(type)){  | 
|             return 10;  | 
|         }else if(EvaluationLabelType.ELE_TYPE.equals(type)){  | 
|             return 11;  | 
|         }else if(EvaluationLabelType.TELF_TYPE.equals(type)){  | 
|             return 12;  | 
|         }else if(EvaluationLabelType.THR_TYPE.equals(type)){  | 
|             return 13;  | 
|         }else if(EvaluationLabelType.FOR_TYPE.equals(type)){  | 
|             return 14;  | 
|         }else if(EvaluationLabelType.FIV_TYPE.equals(type)){  | 
|             return 15;  | 
|         }else if(EvaluationLabelType.SI_TYPE.equals(type)){  | 
|             return 16;  | 
|         }else if(EvaluationLabelType.SEV_TYPE.equals(type)){  | 
|             return 17;  | 
|         }else if(EvaluationLabelType.EIG_TYPE.equals(type)){  | 
|             return 18;  | 
|         }else if(EvaluationLabelType.NIG_TYPE.equals(type)){  | 
|             return 19;  | 
|         }  | 
|         return 0;  | 
|     }  | 
|   | 
|     public static boolean isBase64(String str) {  | 
|         if (str == null || str.trim().length() == 0) {  | 
|             return false;  | 
|         } else {  | 
|             if (str.length() % 4 != 0) {  | 
|                 return false;  | 
|             }  | 
|   | 
|             char[] strChars = str.toCharArray();  | 
|             for (char c:strChars) {  | 
|                 if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9')  | 
|                         || c == '+' || c == '/' || c == '=') {  | 
|                     continue;  | 
|                 } else {  | 
|                     return false;  | 
|                 }  | 
|             }  | 
|             return true;  | 
|         }  | 
|     }  | 
|   | 
|     public  static String generate(String prefix,long datacenterId){  | 
|         Snowflake snowflake = IdUtil.createSnowflake(Convert.toLong(0), datacenterId);  | 
|         return prefix+snowflake.nextIdStr();  | 
|     }  | 
|   | 
|    /* public static void main(String[] args) {  | 
|         String now = sdf1.format(new Date());  | 
|         System.out.println(now);  | 
|         int b = checkBig(now,"2019-12-31 14:00:00");  | 
|         System.out.println(b);  | 
|     }*/  | 
|     /**  | 
|      *  | 
|      * @param s1  时间字符串  注意时间格式要一样哦,不一样你比个毛线  | 
|      * @param s2 时间字符串  | 
|      * @return 1是s1大    2是s2大   0是俩个一样大   -1是出错了吧  | 
|      */  | 
|     public static int checkBig(String s1,String s2){  | 
|         try {  | 
|             if(s1.compareTo(s2) >0){  | 
|                 return 1;  | 
|             }else if(s1.compareTo(s2) <0){  | 
|                 return 2;  | 
|             }else{  | 
|                 return 0;  | 
|             }  | 
|         } catch (Exception e) {  | 
|             e.printStackTrace();  | 
|             return -1;  | 
|         }  | 
|     }  | 
|   | 
|   | 
|     public static String dayForWeek(String pTime) throws Throwable {  | 
|   | 
|         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");  | 
|   | 
|         Date tmpDate = format.parse(pTime);  | 
|   | 
|         Calendar cal = Calendar.getInstance();  | 
|   | 
|         String[] weekDays = { "7", "1", "2", "3", "4", "5", "6" };  | 
|   | 
|         try {  | 
|   | 
|             cal.setTime(tmpDate);  | 
|   | 
|         } catch (Exception e) {  | 
|   | 
|             e.printStackTrace();  | 
|   | 
|         }  | 
|   | 
|         int w = cal.get(Calendar.DAY_OF_WEEK) - 1; // 指示一个星期中的某天。  | 
|   | 
|         if (w < 0){  | 
|             w = 0;  | 
|         }  | 
|         return weekDays[w];  | 
|   | 
|     }  | 
|   | 
|   | 
|     public static boolean isInteger(String s) {  | 
|         if (s != null && !"".equals(s.trim())){  | 
|             return s.matches("^[0-9]*$");  | 
|         }  | 
|         else{  | 
|             return false;  | 
|         }  | 
|     }  | 
|   | 
|     public static int getDayHour() {  | 
|         Calendar cal=Calendar.getInstance(TimeZone.getTimeZone("GMT+8"));  | 
|         int hour=cal.get(Calendar.HOUR_OF_DAY);  | 
|         return hour;  | 
|     }  | 
|   | 
| }  |