|
@@ -1,10 +1,12 @@
|
|
package org.jeecg.modules.adweb.common.util;
|
|
package org.jeecg.modules.adweb.common.util;
|
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
+
|
|
import org.apache.commons.lang3.tuple.Pair;
|
|
import org.apache.commons.lang3.tuple.Pair;
|
|
|
|
|
|
import java.text.ParseException;
|
|
import java.text.ParseException;
|
|
import java.text.SimpleDateFormat;
|
|
import java.text.SimpleDateFormat;
|
|
|
|
+import java.time.Duration;
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDate;
|
|
import java.time.ZoneId;
|
|
import java.time.ZoneId;
|
|
import java.time.temporal.ChronoUnit;
|
|
import java.time.temporal.ChronoUnit;
|
|
@@ -23,41 +25,27 @@ import java.util.stream.IntStream;
|
|
@Slf4j
|
|
@Slf4j
|
|
public class DateUtil {
|
|
public class DateUtil {
|
|
|
|
|
|
- /**
|
|
|
|
- * 标准日期格式(yyyy-MM-dd)
|
|
|
|
- */
|
|
|
|
|
|
+ /** 标准日期格式(yyyy-MM-dd) */
|
|
public static final String DATE_FORMAT = "yyyy-MM-dd";
|
|
public static final String DATE_FORMAT = "yyyy-MM-dd";
|
|
|
|
|
|
- /**
|
|
|
|
- * 标准时间格式(yyyy-MM-dd HH:mm:ss)
|
|
|
|
- */
|
|
|
|
|
|
+ /** 标准时间格式(yyyy-MM-dd HH:mm:ss) */
|
|
public static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
|
|
public static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
|
|
|
|
|
|
- /**
|
|
|
|
- * 带时区的时间格式(yyyy-MM-dd HH:mm:ss +00:00)
|
|
|
|
- */
|
|
|
|
|
|
+ /** 带时区的时间格式(yyyy-MM-dd HH:mm:ss +00:00) */
|
|
public static final String ZONED_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss X";
|
|
public static final String ZONED_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss X";
|
|
|
|
|
|
- /**
|
|
|
|
- * 时间格式(yyyy/MM/dd)
|
|
|
|
- */
|
|
|
|
|
|
+ /** 时间格式(yyyy/MM/dd) */
|
|
public static final String SUBJECT_DATE_FORMAT = "yyyy/MM/dd";
|
|
public static final String SUBJECT_DATE_FORMAT = "yyyy/MM/dd";
|
|
|
|
|
|
- /**
|
|
|
|
- * 时间格式(yyyyMMdd)
|
|
|
|
- */
|
|
|
|
|
|
+ /** 时间格式(yyyyMMdd) */
|
|
public static final String COMPACT_DATE_FORMAT = "yyyyMMdd";
|
|
public static final String COMPACT_DATE_FORMAT = "yyyyMMdd";
|
|
|
|
|
|
- /**
|
|
|
|
- * 时间格式(yyyyMMddHHmmss)
|
|
|
|
- */
|
|
|
|
|
|
+ /** 时间格式(yyyyMMddHHmmss) */
|
|
public static final String COMPACT_DATE_TIME_FORMAT = "yyyyMMddHHmmss";
|
|
public static final String COMPACT_DATE_TIME_FORMAT = "yyyyMMddHHmmss";
|
|
|
|
|
|
public static final ZoneId DEFAULT_ZONE_ID = ZoneId.of("Asia/Shanghai");
|
|
public static final ZoneId DEFAULT_ZONE_ID = ZoneId.of("Asia/Shanghai");
|
|
|
|
|
|
- /**
|
|
|
|
- * 取得系统当前日期
|
|
|
|
- */
|
|
|
|
|
|
+ /** 取得系统当前日期 */
|
|
public static Date getDate() {
|
|
public static Date getDate() {
|
|
return new Date();
|
|
return new Date();
|
|
}
|
|
}
|
|
@@ -130,7 +118,7 @@ public class DateUtil {
|
|
/**
|
|
/**
|
|
* 在当前日期上追加N天
|
|
* 在当前日期上追加N天
|
|
*
|
|
*
|
|
- * @param date 当前日期
|
|
|
|
|
|
+ * @param date 当前日期
|
|
* @param daysToAdd 添加天数
|
|
* @param daysToAdd 添加天数
|
|
* @return 日期字符串形式
|
|
* @return 日期字符串形式
|
|
*/
|
|
*/
|
|
@@ -145,7 +133,7 @@ public class DateUtil {
|
|
* 在当前日期上追加N年
|
|
* 在当前日期上追加N年
|
|
*
|
|
*
|
|
* @param date 当前日期
|
|
* @param date 当前日期
|
|
- * @param num 添加年数
|
|
|
|
|
|
+ * @param num 添加年数
|
|
* @return 日期字符串形式
|
|
* @return 日期字符串形式
|
|
*/
|
|
*/
|
|
public static Date addYear(Date date, int num) {
|
|
public static Date addYear(Date date, int num) {
|
|
@@ -169,9 +157,7 @@ public class DateUtil {
|
|
LocalDate.ofInstant(end.toInstant(), DEFAULT_ZONE_ID));
|
|
LocalDate.ofInstant(end.toInstant(), DEFAULT_ZONE_ID));
|
|
}
|
|
}
|
|
|
|
|
|
- /**
|
|
|
|
- * 获取start和end之间所有的日期,包含起止两端
|
|
|
|
- */
|
|
|
|
|
|
+ /** 获取start和end之间所有的日期,包含起止两端 */
|
|
public static List<Date> getAllDaysBetween(Date start, Date end) {
|
|
public static List<Date> getAllDaysBetween(Date start, Date end) {
|
|
return IntStream.rangeClosed(0, diffDays(start, end))
|
|
return IntStream.rangeClosed(0, diffDays(start, end))
|
|
.mapToObj(diff -> addDays(start, diff))
|
|
.mapToObj(diff -> addDays(start, diff))
|
|
@@ -209,4 +195,30 @@ public class DateUtil {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 秒单位转换为duration字符串,如2小时36分18秒
|
|
|
|
+ *
|
|
|
|
+ * @param durationSeconds
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public static String formatDuration(double durationSeconds) {
|
|
|
|
+ if (durationSeconds <= 60d) {
|
|
|
|
+ // 小于60秒时,保留两位小数
|
|
|
|
+ return NumberUtil.formatDecimal(durationSeconds, 2) + "秒";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Duration duration = Duration.ofSeconds((long) durationSeconds);
|
|
|
|
+ int hours = duration.toHoursPart();
|
|
|
|
+ StringBuilder result = new StringBuilder();
|
|
|
|
+ if (hours > 0) {
|
|
|
|
+ result.append(hours).append("小时");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return result.append(duration.toMinutesPart())
|
|
|
|
+ .append("分")
|
|
|
|
+ .append(duration.toSecondsPart())
|
|
|
|
+ .append("秒")
|
|
|
|
+ .toString();
|
|
|
|
+ }
|
|
}
|
|
}
|