|
|
@@ -1,6 +1,8 @@
|
|
|
package com.sckw.excel.utils;
|
|
|
|
|
|
|
|
|
+import cn.hutool.core.date.DateField;
|
|
|
+import cn.hutool.core.date.DateTime;
|
|
|
import com.sckw.core.exception.BusinessException;
|
|
|
import com.sckw.core.utils.StringUtils;
|
|
|
|
|
|
@@ -8,9 +10,7 @@ import java.text.ParseException;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.time.*;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
-import java.util.Calendar;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.GregorianCalendar;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* @description: 时间工具类
|
|
|
@@ -29,6 +29,11 @@ public class DateUtil {
|
|
|
public DateUtil() {
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取当前时间
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
public static long getSystemTimeMillis() {
|
|
|
Clock clock = Clock.systemDefaultZone();
|
|
|
return clock.millis();
|
|
|
@@ -116,7 +121,7 @@ public class DateUtil {
|
|
|
* @param str
|
|
|
* @return
|
|
|
*/
|
|
|
- public static LocalDateTime strToDateTime(String str) {
|
|
|
+ public static LocalDateTime strToLocalDateTime(String str) {
|
|
|
LocalDate localDate = LocalDate.parse(str, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
|
LocalDateTime localDateTime = localDate.atStartOfDay();
|
|
|
String format = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
|
|
@@ -134,6 +139,33 @@ public class DateUtil {
|
|
|
return LocalDate.parse(str, DateTimeFormatter.ofPattern("yyyyMMdd"));
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * yyyyMMdd 转换成 LocalDate
|
|
|
+ *
|
|
|
+ * @param str
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static LocalDate strToDateTime(String str) {
|
|
|
+ return LocalDate.parse(str, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * yyyy-MM-dd HH:mm:ss 转换成 Date
|
|
|
+ *
|
|
|
+ * @param str
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static Date strDateTimeToDateTime(String str) {
|
|
|
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DEFAULT_DATE_PATTERN);
|
|
|
+ Date parse = null;
|
|
|
+ try {
|
|
|
+ parse = simpleDateFormat.parse(str);
|
|
|
+ } catch (ParseException e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ return parse;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* @param time yyyy-MM-dd
|
|
|
@@ -154,6 +186,63 @@ public class DateUtil {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取上周和上上周的开始时间和结束时间
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private static Map<String, String> getLastWeekTime() {
|
|
|
+ cn.hutool.core.date.Week week = DateTime.now().dayOfWeekEnum();
|
|
|
+ switch (week) {
|
|
|
+ /** 周一 */
|
|
|
+ case MONDAY:
|
|
|
+ return getRealizeLastWeekTime(-14, -8, -7, -1);
|
|
|
+ /** 周二 */
|
|
|
+ case TUESDAY:
|
|
|
+ return getRealizeLastWeekTime(-15, -9, -8, -2);
|
|
|
+ /** 周三 */
|
|
|
+ case WEDNESDAY:
|
|
|
+ return getRealizeLastWeekTime(-16, -10, -9, -3);
|
|
|
+ /** 周四 */
|
|
|
+ case THURSDAY:
|
|
|
+ return getRealizeLastWeekTime(-17, -11, -10, -4);
|
|
|
+ /** 周五 */
|
|
|
+ case FRIDAY:
|
|
|
+ return getRealizeLastWeekTime(-18, -12, -11, -5);
|
|
|
+ /** 周六 */
|
|
|
+ case SATURDAY:
|
|
|
+ return getRealizeLastWeekTime(-19, -13, -12, -6);
|
|
|
+ /** 周日 */
|
|
|
+ case SUNDAY:
|
|
|
+ return getRealizeLastWeekTime(-20, -14, -13, -7);
|
|
|
+ default:
|
|
|
+ throw new RuntimeException("method:getLastWeekTime,获取当前时间是周几异常");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private static Map<String, String> getRealizeLastWeekTime(int upLastStartOffset,int upLastEndOffset,int lastStartOffset,int lastEndOffset) {
|
|
|
+ // 获取上上周的开始时间和结束时间
|
|
|
+ String startUpLastWeekTime = DateTime.now().offset(DateField.DAY_OF_YEAR, upLastStartOffset)
|
|
|
+ .setField(DateField.HOUR_OF_DAY,0).setField(DateField.MINUTE,0)
|
|
|
+ .setField(DateField.SECOND,0).setField(DateField.MILLISECOND,0).toString();
|
|
|
+ String endUpLastWeekTime = DateTime.now().offset(DateField.DAY_OF_YEAR, upLastEndOffset)
|
|
|
+ .setField(DateField.HOUR_OF_DAY,23).setField(DateField.MINUTE,59)
|
|
|
+ .setField(DateField.SECOND,59).setField(DateField.MILLISECOND,0).toString();
|
|
|
+ // 获取上周的开始时间和结束时间
|
|
|
+ String startLastWeekTime = DateTime.now().offset(DateField.DAY_OF_YEAR, lastStartOffset)
|
|
|
+ .setField(DateField.HOUR_OF_DAY,0).setField(DateField.MINUTE,0)
|
|
|
+ .setField(DateField.SECOND,0).setField(DateField.MILLISECOND,0).toString();
|
|
|
+ String endLastWeekTime = DateTime.now().offset(DateField.DAY_OF_YEAR, lastEndOffset)
|
|
|
+ .setField(DateField.HOUR_OF_DAY,23).setField(DateField.MINUTE,59)
|
|
|
+ .setField(DateField.SECOND,59).setField(DateField.MILLISECOND,0).toString();
|
|
|
+ Map<String, String> maps = new HashMap();
|
|
|
+ maps.put("startUpLastWeekTime", startUpLastWeekTime);
|
|
|
+ maps.put("endUpLastWeekTime", endUpLastWeekTime);
|
|
|
+ maps.put("startLastWeekTime", startLastWeekTime);
|
|
|
+ maps.put("endLastWeekTime", endLastWeekTime);
|
|
|
+ return maps;
|
|
|
+ }
|
|
|
/**
|
|
|
* yyyy-MM-dd 转换成 Date
|
|
|
*
|
|
|
@@ -373,11 +462,20 @@ public class DateUtil {
|
|
|
}
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
- String s = "2023-12-12";
|
|
|
- Date date = DateUtil.stringPatchingStartToDateTime(s);
|
|
|
- Date date1 = DateUtil.stringPatchingEndToDateTime(s);
|
|
|
- System.out.println(date);
|
|
|
- System.out.println(date1);
|
|
|
+// String s = "2023-12-12";
|
|
|
+// Date date = DateUtil.stringPatchingStartToDateTime(s);
|
|
|
+// Date date1 = DateUtil.stringPatchingEndToDateTime(s);
|
|
|
+// System.out.println(date);
|
|
|
+// System.out.println(date1);
|
|
|
+// String lastWeekDateStart = getLastWeekDateStart();
|
|
|
+// String lastWeekDateEnd = getLastWeekDateEnd();
|
|
|
+// System.out.println(lastWeekDateStart);
|
|
|
+// System.out.println(lastWeekDateEnd);
|
|
|
+ String beforeWeekDate = DateUtil.getBeforeWeekDate(6)+" 00:00:00";
|
|
|
+ String beforeWeekDate1 = DateUtil.getBeforeWeekDate(7)+" 23:59:59";;
|
|
|
+ System.out.println(beforeWeekDate);
|
|
|
+ System.out.println(beforeWeekDate1);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
public static int getCurrentMonthDays() {
|
|
|
@@ -537,4 +635,122 @@ public class DateUtil {
|
|
|
private Lanagues() {
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 当前时间的前一个星期
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getLastWeekDate() {
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ Calendar c = Calendar.getInstance();
|
|
|
+ c.add(Calendar.DAY_OF_MONTH, -6);
|
|
|
+ String start = format.format(c.getTime());
|
|
|
+ System.out.println(start);
|
|
|
+ return start;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 当前时间的前一个星期
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getLastWeekDateStart() {
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ Calendar c = Calendar.getInstance();
|
|
|
+ c.add(Calendar.DAY_OF_MONTH, -6);
|
|
|
+ String start = format.format(c.getTime()) + " 00:00:00";
|
|
|
+// System.out.println(start);
|
|
|
+ return start;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 当前时间的前一个星期
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getLastWeekDateEnd() {
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ Calendar c = Calendar.getInstance();
|
|
|
+ c.add(Calendar.DAY_OF_MONTH, -6);
|
|
|
+ String start = format.format(c.getTime()) + " 23:59:59";
|
|
|
+// System.out.println(start);
|
|
|
+ return start;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取当前日期之前的时间
|
|
|
+ *
|
|
|
+ * @param amount 往前推多久时间[天为单位]
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getBeforeWeekDate(int amount) {
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ Calendar c = Calendar.getInstance();
|
|
|
+ c.add(Calendar.DAY_OF_MONTH, -amount);
|
|
|
+ String start = format.format(c.getTime());
|
|
|
+ return start;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 当天日期前一个月
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getLastMonthDate() {
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ Calendar c = Calendar.getInstance();
|
|
|
+ c.add(Calendar.MONTH, -1);
|
|
|
+ String start = format.format(c.getTime());
|
|
|
+ System.out.println(start);
|
|
|
+ return start;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取当前日期之前的时间
|
|
|
+ *
|
|
|
+ * @param amount 往前推多久时间[月为单位]
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getBeforeMonthDate(int amount) {
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ Calendar c = Calendar.getInstance();
|
|
|
+ c.add(Calendar.MONTH, -amount);
|
|
|
+ String start = format.format(c.getTime());
|
|
|
+ return start;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 当天日期前两个月
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getLastMonthDate1() {
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ Calendar c = Calendar.getInstance();
|
|
|
+ c.setTime(strDateTimeToDateTime(getLastMonthDate()));
|
|
|
+ c.add(Calendar.MONTH, -1);
|
|
|
+ String start = format.format(c.getTime());
|
|
|
+ System.out.println(start);
|
|
|
+ return start;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 当前时间的前一年开始时间
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getLastYearDate() {
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ Calendar c = Calendar.getInstance();
|
|
|
+ c.add(Calendar.YEAR, -1);
|
|
|
+ String start = format.format(c.getTime());
|
|
|
+ System.out.println(start);
|
|
|
+ return start;
|
|
|
+ }
|
|
|
+
|
|
|
}
|