|
@@ -1,8 +1,14 @@
|
|
|
package cn.iocoder.yudao.framework.common.util.date;
|
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
+import cn.hutool.core.date.LocalDateTimeUtil;
|
|
|
|
|
|
import java.time.Duration;
|
|
|
+import java.time.Instant;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.ZoneId;
|
|
|
+import java.time.ZonedDateTime;
|
|
|
+import java.time.temporal.ChronoUnit;
|
|
|
import java.util.Calendar;
|
|
|
import java.util.Date;
|
|
|
|
|
@@ -25,6 +31,22 @@ public class DateUtils {
|
|
|
|
|
|
public static final String FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND = "yyyy-MM-dd HH:mm:ss";
|
|
|
|
|
|
+ public static Date localDateTimeToDate(LocalDateTime date){
|
|
|
+ // 将此日期时间与时区相结合以创建 ZonedDateTime
|
|
|
+ ZonedDateTime zonedDateTime = date.atZone(ZoneId.systemDefault());
|
|
|
+ // 本地时间线LocalDateTime到即时时间线Instant时间戳
|
|
|
+ Instant instant = zonedDateTime.toInstant();
|
|
|
+ // UTC时间(世界协调时间,UTC + 00:00)转北京(北京,UTC + 8:00)时间
|
|
|
+ return Date.from(instant);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static LocalDateTime dateToLocalDateTime(Date date){
|
|
|
+ // 转为时间戳
|
|
|
+ Instant instant = date.toInstant();
|
|
|
+ // UTC时间(世界协调时间,UTC + 00:00)转北京(北京,UTC + 8:00)时间
|
|
|
+ return LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
|
|
|
+ }
|
|
|
+
|
|
|
public static Date addTime(Duration duration) {
|
|
|
return new Date(System.currentTimeMillis() + duration.toMillis());
|
|
|
}
|
|
@@ -33,6 +55,11 @@ public class DateUtils {
|
|
|
return System.currentTimeMillis() > time.getTime();
|
|
|
}
|
|
|
|
|
|
+ public static boolean isExpired(LocalDateTime time) {
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+ return now.isAfter(time);
|
|
|
+ }
|
|
|
+
|
|
|
public static long diff(Date endTime, Date startTime) {
|
|
|
return endTime.getTime() - startTime.getTime();
|
|
|
}
|
|
@@ -40,24 +67,28 @@ public class DateUtils {
|
|
|
/**
|
|
|
* 创建指定时间
|
|
|
*
|
|
|
- * @param year 年
|
|
|
- * @param mouth 月
|
|
|
- * @param day 日
|
|
|
+ * @param year 年
|
|
|
+ * @param mouth 月
|
|
|
+ * @param day 日
|
|
|
* @return 指定时间
|
|
|
*/
|
|
|
public static Date buildTime(int year, int mouth, int day) {
|
|
|
return buildTime(year, mouth, day, 0, 0, 0);
|
|
|
}
|
|
|
|
|
|
+ public static LocalDateTime buildLocalDateTime(int year, int mouth, int day) {
|
|
|
+ return buildLocalDateTime(year, mouth, day, 0, 0, 0);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 创建指定时间
|
|
|
*
|
|
|
- * @param year 年
|
|
|
- * @param mouth 月
|
|
|
- * @param day 日
|
|
|
- * @param hour 小时
|
|
|
- * @param minute 分钟
|
|
|
- * @param second 秒
|
|
|
+ * @param year 年
|
|
|
+ * @param mouth 月
|
|
|
+ * @param day 日
|
|
|
+ * @param hour 小时
|
|
|
+ * @param minute 分钟
|
|
|
+ * @param second 秒
|
|
|
* @return 指定时间
|
|
|
*/
|
|
|
public static Date buildTime(int year, int mouth, int day,
|
|
@@ -73,6 +104,19 @@ public class DateUtils {
|
|
|
return calendar.getTime();
|
|
|
}
|
|
|
|
|
|
+ public static LocalDateTime buildLocalDateTime(int year, int mouth, int day,
|
|
|
+ int hour, int minute, int second) {
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ calendar.set(Calendar.YEAR, year);
|
|
|
+ calendar.set(Calendar.MONTH, mouth - 1);
|
|
|
+ calendar.set(Calendar.DAY_OF_MONTH, day);
|
|
|
+ calendar.set(Calendar.HOUR_OF_DAY, hour);
|
|
|
+ calendar.set(Calendar.MINUTE, minute);
|
|
|
+ calendar.set(Calendar.SECOND, second);
|
|
|
+ calendar.set(Calendar.MILLISECOND, 0); // 一般情况下,都是 0 毫秒
|
|
|
+ return dateToLocalDateTime(calendar.getTime());
|
|
|
+ }
|
|
|
+
|
|
|
public static Date max(Date a, Date b) {
|
|
|
if (a == null) {
|
|
|
return b;
|
|
@@ -83,6 +127,16 @@ public class DateUtils {
|
|
|
return a.compareTo(b) > 0 ? a : b;
|
|
|
}
|
|
|
|
|
|
+ public static LocalDateTime maxLocalDateTime(LocalDateTime a, LocalDateTime b) {
|
|
|
+ if (a == null) {
|
|
|
+ return b;
|
|
|
+ }
|
|
|
+ if (b == null) {
|
|
|
+ return a;
|
|
|
+ }
|
|
|
+ return a.compareTo(b) > 0 ? a : b;
|
|
|
+ }
|
|
|
+
|
|
|
public static boolean beforeNow(Date date) {
|
|
|
return date.getTime() < System.currentTimeMillis();
|
|
|
}
|
|
@@ -91,6 +145,10 @@ public class DateUtils {
|
|
|
return date.getTime() >= System.currentTimeMillis();
|
|
|
}
|
|
|
|
|
|
+ public static boolean afterNow(LocalDateTime localDateTime) {
|
|
|
+ return localDateTime.isAfter(LocalDateTime.now());
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 计算当期时间相差的日期
|
|
|
*
|
|
@@ -135,4 +193,14 @@ public class DateUtils {
|
|
|
return DateUtil.isSameDay(date, new Date());
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 是否今天
|
|
|
+ *
|
|
|
+ * @param date 日期
|
|
|
+ * @return 是否
|
|
|
+ */
|
|
|
+ public static boolean isToday(LocalDateTime date) {
|
|
|
+ return LocalDateTimeUtil.isSameDay(date, LocalDateTime.now());
|
|
|
+ }
|
|
|
+
|
|
|
}
|