| | |
| | | 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; |
| | | |
| | |
| | | date = date.substring(0,i); |
| | | } |
| | | } |
| | | //TimeZone tz = TimeZone.getTimeZone("GMT-01"); |
| | | //TimeZone tz = TimeZone.getTimeZone("GMT-01");2024-10-21T10:40:04+08:00 |
| | | DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS"); |
| | | // DateFormat df = new SimpleDateFormat("2023-12-08 T 09:25:54.698+08:00"); |
| | | df.setTimeZone(tz); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取X月份之前的月份数 |
| | | * @param currentDate |
| | | * @param month |
| | | * @return |
| | | */ |
| | | public static List<String> getBeforMonth(Date currentDate , Integer month) { |
| | | SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy"); |
| | | SimpleDateFormat sdfMonth = new SimpleDateFormat("MM"); |
| | | int currentYear = Integer.parseInt(sdfYear.format(currentDate)); |
| | | int currentMonth = Integer.parseInt(sdfMonth.format(currentDate)); |
| | | List<String> list = new ArrayList<>(); |
| | | |
| | | for (int i = 0; i < month; i++) { |
| | | int tempYear = currentYear; |
| | | int tempMonth = currentMonth - i; |
| | | |
| | | if (tempMonth <= 0) { |
| | | tempYear--; |
| | | tempMonth += 12; |
| | | } |
| | | list.add(tempYear +"-" + StringUtils.leftPad(Integer.toString(tempMonth),2,"0")); |
| | | } |
| | | return list; |
| | | } |
| | | /** |
| | | * 获取X月份之前的月份数 |
| | | * @param currentDate |
| | | * @param month |
| | | * @return |
| | | */ |
| | | public static List<String> getDateListBeforMonth(Date currentDate , Integer month) { |
| | | SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy"); |
| | | SimpleDateFormat sdfMonth = new SimpleDateFormat("MM"); |
| | | int currentYear = Integer.parseInt(sdfYear.format(currentDate)); |
| | | int currentMonth = Integer.parseInt(sdfMonth.format(currentDate)); |
| | | List<String> list = new ArrayList<>(); |
| | | |
| | | for (int i = 0; i < month; i++) { |
| | | int tempYear = currentYear; |
| | | int tempMonth = currentMonth - i; |
| | | |
| | | if (tempMonth <= 0) { |
| | | tempYear--; |
| | | tempMonth += 12; |
| | | } |
| | | list.add(tempYear +"-" + StringUtils.leftPad(Integer.toString(tempMonth),2,"0")); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | public static List<String> getBeforDays(Date currentDate,Integer days){ |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(currentDate); |
| | | Date endDate = currentDate; // 获取当前日期 |
| | | calendar.add(Calendar.DAY_OF_YEAR, -days); // 往前推7天 |
| | | Date startDate = calendar.getTime(); // 获取推算后的日期 |
| | | List<String> list = new ArrayList<>(); |
| | | while (startDate.before(endDate)) { |
| | | calendar.add(Calendar.DAY_OF_YEAR, 1); // 获取下一天日期 |
| | | startDate = calendar.getTime(); |
| | | list.add(DateUtil.dateToString(startDate,"yyyy-MM-dd")); |
| | | System.out.println(DateUtil.dateToString(startDate,"yyyy-MM-dd")); |
| | | } |
| | | return list; |
| | | } |
| | | public static List<Date> getDateListBeforDays(Date currentDate,Integer days){ |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(currentDate); |
| | | Date endDate = currentDate; // 获取当前日期 |
| | | calendar.add(Calendar.DAY_OF_YEAR, -days); // 往前推7天 |
| | | Date startDate = calendar.getTime(); // 获取推算后的日期 |
| | | List<Date> list = new ArrayList<>(); |
| | | while (startDate.before(endDate)) { |
| | | calendar.add(Calendar.DAY_OF_YEAR, 1); // 获取下一天日期 |
| | | startDate = calendar.getTime(); |
| | | list.add(startDate); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * Descrption:取得当前日期时间,格式为:YYYYMMDDHHMISS |
| | | * |
| | | * @return String |
| | |
| | | * @return String |
| | | * @throws Exception |
| | | */ |
| | | public static String getNowPlusTime() throws Exception { |
| | | public static String getNowPlusTime() { |
| | | String nowDate = ""; |
| | | try { |
| | | java.sql.Date date = null; |
| | |
| | | * @return String |
| | | * @throws Exception |
| | | */ |
| | | public static String getPlusTime(Date date) throws Exception { |
| | | public static String getPlusTime(Date date) { |
| | | if (date == null) |
| | | return null; |
| | | try { |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 将指定格式的字符串转换为日期型 |
| | | * |
| | | * @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"); |
| | |
| | | } |
| | | } |
| | | return length; |
| | | } |
| | | |
| | | /** |
| | | * 得到X分钟后的时间(时间格式) |
| | | * |
| | | * @param date |
| | | * @param minute |
| | | * @return |
| | | */ |
| | | public static Date getXMinuteAfterDate(Date date, int minute) { |
| | | if(date ==null){ |
| | | date = new Date(); |
| | | } |
| | | Calendar now = Calendar.getInstance(); |
| | | now.setTime(date); |
| | | now.set(Calendar.MINUTE, now.get(Calendar.MINUTE) + minute); |
| | | return now.getTime(); |
| | | } |
| | | |
| | | /** |
| | |
| | | return ""; |
| | | } |
| | | } |
| | | public static List<Date> getThisMonthDateList() { |
| | | List<Date> dateList = new ArrayList<>(); |
| | | try { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); |
| | | calendar.set(Calendar.HOUR,0); |
| | | calendar.set(Calendar.MINUTE,0); |
| | | calendar.set(Calendar.SECOND,0); |
| | | calendar.set(Calendar.MILLISECOND,0); |
| | | for (int i = 0; i < daysInMonth; i++) { |
| | | calendar.set(Calendar.DAY_OF_MONTH,i+1); |
| | | dateList.add(calendar.getTime()); |
| | | } |
| | | } catch (Exception e) { |
| | | return null; |
| | | } |
| | | return dateList; |
| | | } |
| | | public static List<Date> getThisYearMonthList() { |
| | | List<Date> dateList = new ArrayList<>(); |
| | | try { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.set(Calendar.DAY_OF_MONTH,1); |
| | | calendar.set(Calendar.HOUR,0); |
| | | calendar.set(Calendar.MINUTE,0); |
| | | calendar.set(Calendar.SECOND,0); |
| | | calendar.set(Calendar.MILLISECOND,0); |
| | | for (int i = 0; i < 12; i++) { |
| | | calendar.set(Calendar.MONTH,i); |
| | | dateList.add(calendar.getTime()); |
| | | } |
| | | } catch (Exception e) { |
| | | return null; |
| | | } |
| | | return dateList; |
| | | } |
| | | public static Date getFirstThisYearDate() { |
| | | try { |
| | | return sdfShort.parse( getNowShortDate().substring(0, 4) + "0101"); |
| | | } catch (Exception e) { |
| | | return null; |
| | | } |
| | | } |
| | | public static String getFirstDayCurrentMonth() { |
| | | try { |
| | | return getDateLong(new Date()).substring(0, 7) + "-01"; |
| | | } catch (Exception e) { |
| | | return ""; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 将yyyyMM各式转换成yyyy年MM月格式 |
| | |
| | | // StringUtil.getNotNullStr(request.getParameter(strParamName)); |
| | | // return getDateByString(strStr); |
| | | // } |
| | | /** |
| | | * 得到当前日期,格式yyyy-MM-dd。 |
| | | * |
| | | * @return String 格式化的日期字符串 |
| | | */ |
| | | public static String getCurrDate() { |
| | | return getFormattedDate(getDateByString("")); |
| | | } |
| | | |
| | | /** |
| | | * 得到当前日期,格式yyyy-MM-dd。 |
| | |
| | | public static String getCurrDateTime() { |
| | | Timestamp date = new Timestamp(System.currentTimeMillis()); |
| | | SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); |
| | | return formatter.format(date); |
| | | } |
| | | |
| | | /** |
| | | * 得到当前日期时间,格式为yyyy-MM-dd. |
| | | * |
| | | * @return String |
| | | */ |
| | | public static String getCurrDate() { |
| | | Timestamp date = new Timestamp(System.currentTimeMillis()); |
| | | SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); |
| | | return formatter.format(date); |
| | | } |
| | | |
| | |
| | | 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)); |
| | | |
| | | |
| | | List<Date> list =getThisMonthDateList(); |
| | | for(Date d :list){ |
| | | System.out.println(getPlusTime2(d)); |
| | | } |
| | | List<Date> list1 =getThisYearMonthList(); |
| | | for(Date d :list1){ |
| | | System.out.println(getPlusTime2(d)); |
| | | } |
| | | |
| | | // 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(); |
| | |
| | | calendar.add(Calendar.DATE, days);// |
| | | return calendar.getTime(); |
| | | } |
| | | public static Date addMonthToDate(Date date, int month) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(date); |
| | | calendar.add(Calendar.MONTH, month);// |
| | | return calendar.getTime(); |
| | | } |
| | | public static Date addYearToDate(Date date, int year) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(date); |
| | | calendar.add(Calendar.YEAR, year);// |
| | | return calendar.getTime(); |
| | | } |
| | | |
| | | public static String afterDateToStr(Integer days){ |
| | | Date date = new Date(); |
| | | Long l = date.getTime()+1000*60*60*24*days; |
| | | date.setTime(l); |
| | | return DateToStr(date, "yyyyMMdd"); |
| | | } |
| | | |
| | | public static String afterDateHourToStr(Integer hour){ |
| | | Date date = new Date(); |
| | | Long l = date.getTime()+1000*60*60*hour; |
| | | date.setTime(l); |
| | | return DateToStr(date, "yyyyMMdd"); |
| | | } |
| | |
| | | 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; |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 获取X天后的日期 |
| | | * @param date |
| | | * @param beforDays 明天 -1 昨天 1 |
| | | * @return |
| | | */ |
| | | public static String getBeforDay(Date date,Integer beforDays){ |
| | | ZonedDateTime zonedDateTime = date.toInstant().atZone(ZoneId.systemDefault()); |
| | | // 转换为java.time.LocalDate,计算x天的日期 |
| | | LocalDate dateBeforeDay = zonedDateTime.toLocalDate().minusDays(beforDays); |
| | | return dateBeforeDay.toString(); |
| | | } |
| | | |
| | | |
| | | } |