|  |  | 
 |  |  | import java.text.ParseException; | 
 |  |  | import java.text.SimpleDateFormat; | 
 |  |  | import java.time.*; | 
 |  |  | import java.time.format.DateTimeFormatter; | 
 |  |  | import java.time.temporal.ChronoUnit; | 
 |  |  | import java.time.temporal.TemporalAdjusters; | 
 |  |  | import java.util.*; | 
 |  |  | import java.util.Date; | 
 |  |  |  | 
 |  |  | import cn.hutool.core.date.DateUnit; | 
 |  |  | import org.apache.commons.lang3.RandomStringUtils; | 
 |  |  | import org.apache.commons.lang3.StringUtils; | 
 |  |  |  | 
 |  |  | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 将指定格式的字符串转换为日期型 | 
 |  |  |      * | 
 |  |  |      * @param strDate | 
 |  |  |      *            - 日期 | 
 |  |  |      * @param oracleFormat | 
 |  |  |      *            --oracle型日期格式 | 
 |  |  |      * @return 转换得到的日期 | 
 |  |  |      */ | 
 |  |  |     @SuppressWarnings("unchecked") | 
 |  |  |     public static Date stringToDate(String strDate, String oracleFormat) { | 
 |  |  |         if (strDate == null) | 
 |  |  |             return null; | 
 |  |  |         Hashtable<Integer, String> h = new Hashtable<Integer, String>(); | 
 |  |  |         String javaFormat = new String(); | 
 |  |  |         String s = oracleFormat.toLowerCase(); | 
 |  |  |         if (s.indexOf("yyyy") != -1) | 
 |  |  |             h.put(new Integer(s.indexOf("yyyy")), "yyyy"); | 
 |  |  |         else if (s.indexOf("yy") != -1) | 
 |  |  |             h.put(new Integer(s.indexOf("yy")), "yy"); | 
 |  |  |         if (s.indexOf("mm") != -1) | 
 |  |  |             h.put(new Integer(s.indexOf("mm")), "MM"); | 
 |  |  |  | 
 |  |  |         if (s.indexOf("dd") != -1) | 
 |  |  |             h.put(new Integer(s.indexOf("dd")), "dd"); | 
 |  |  |         if (s.indexOf("hh24") != -1) | 
 |  |  |             h.put(new Integer(s.indexOf("hh24")), "HH"); | 
 |  |  |         if (s.indexOf("mi") != -1) | 
 |  |  |             h.put(new Integer(s.indexOf("mi")), "mm"); | 
 |  |  |         if (s.indexOf("ss") != -1) | 
 |  |  |             h.put(new Integer(s.indexOf("ss")), "ss"); | 
 |  |  |  | 
 |  |  |         int intStart = 0; | 
 |  |  |         while (s.indexOf("-", intStart) != -1) { | 
 |  |  |             intStart = s.indexOf("-", intStart); | 
 |  |  |             h.put(new Integer(intStart), "-"); | 
 |  |  |             intStart++; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         intStart = 0; | 
 |  |  |         while (s.indexOf("/", intStart) != -1) { | 
 |  |  |             intStart = s.indexOf("/", intStart); | 
 |  |  |             h.put(new Integer(intStart), "/"); | 
 |  |  |             intStart++; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         intStart = 0; | 
 |  |  |         while (s.indexOf(" ", intStart) != -1) { | 
 |  |  |             intStart = s.indexOf(" ", intStart); | 
 |  |  |             h.put(new Integer(intStart), " "); | 
 |  |  |             intStart++; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         intStart = 0; | 
 |  |  |         while (s.indexOf(":", intStart) != -1) { | 
 |  |  |             intStart = s.indexOf(":", intStart); | 
 |  |  |             h.put(new Integer(intStart), ":"); | 
 |  |  |             intStart++; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         if (s.indexOf("年") != -1) | 
 |  |  |             h.put(new Integer(s.indexOf("年")), "年"); | 
 |  |  |         if (s.indexOf("月") != -1) | 
 |  |  |             h.put(new Integer(s.indexOf("月")), "月"); | 
 |  |  |         if (s.indexOf("日") != -1) | 
 |  |  |             h.put(new Integer(s.indexOf("日")), "日"); | 
 |  |  |         if (s.indexOf("时") != -1) | 
 |  |  |             h.put(new Integer(s.indexOf("时")), "时"); | 
 |  |  |         if (s.indexOf("分") != -1) | 
 |  |  |             h.put(new Integer(s.indexOf("分")), "分"); | 
 |  |  |         if (s.indexOf("秒") != -1) | 
 |  |  |             h.put(new Integer(s.indexOf("秒")), "秒"); | 
 |  |  |  | 
 |  |  |         int i = 0; | 
 |  |  |         while (h.size() != 0) { | 
 |  |  |             Enumeration e = h.keys(); | 
 |  |  |             int n = 0; | 
 |  |  |             while (e.hasMoreElements()) { | 
 |  |  |                 i = ((Integer) e.nextElement()).intValue(); | 
 |  |  |                 if (i >= n) | 
 |  |  |                     n = i; | 
 |  |  |             } | 
 |  |  |             String temp = (String) h.get(new Integer(n)); | 
 |  |  |             h.remove(new Integer(n)); | 
 |  |  |  | 
 |  |  |             javaFormat = temp + javaFormat; | 
 |  |  |         } | 
 |  |  |         SimpleDateFormat df = new SimpleDateFormat(javaFormat); | 
 |  |  |  | 
 |  |  |         Date myDate = new Date(); | 
 |  |  |         try { | 
 |  |  |             myDate = df.parse(strDate); | 
 |  |  |         } catch (Exception e) { | 
 |  |  |             // e.printStackTrace(); | 
 |  |  |             return null; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         return myDate; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public static Date StringToDate(String DATE1) { | 
 |  |  |         DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | 
 |  |  | 
 |  |  |         try { | 
 |  |  | //            Date date = getISO8601DateByStr("2024-04-15T07:46:36.014+08:00"); | 
 |  |  | //            Date date1 = getISO8601DateByStr("2024-06-14T08:46:36.014+08:00"); | 
 |  |  |             System.out.println(DateUtil.afterMinutesDate(-5)); | 
 |  |  | //            System.out.println(DateUtil.afterMinutesDate(-5)); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |             Date startTime = DateUtil.StringToDate("2024-05-01 08:00:00" ,"yyyy-MM-dd HH:mm:ss"); | 
 |  |  |             Date endTime = DateUtil.StringToDate("2024-05-01 17:00:00" ,"yyyy-MM-dd HH:mm:ss"); | 
 |  |  |             Long intervalTime = 35L; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |             DateUtil.checkDateInterval( startTime.toInstant() | 
 |  |  |                     .atZone(ZoneId.systemDefault()) | 
 |  |  |                     .toLocalDateTime(), endTime.toInstant() | 
 |  |  |                     .atZone(ZoneId.systemDefault()) | 
 |  |  |                     .toLocalDateTime(),intervalTime); | 
 |  |  |  | 
 |  |  |         } catch (Exception ex) { | 
 |  |  |             ex.printStackTrace(); | 
 |  |  | 
 |  |  |         System.out.println(time); | 
 |  |  |         return time; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public static List<LocalDateTime> checkDateInterval(LocalDateTime localStartTime,LocalDateTime localEndTime,Long interval){ | 
 |  |  |         List<LocalDateTime> segments = new ArrayList<>(); | 
 |  |  |         LocalDateTime current = localStartTime; | 
 |  |  |         while (current.isBefore(localEndTime)) { | 
 |  |  |             segments.add(current); | 
 |  |  |             current = current.plus(interval, ChronoUnit.MINUTES); | 
 |  |  |         } | 
 |  |  |         return segments; | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  | } |