diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForConsolePrint.java b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForConsolePrint.java index fc52dac8..4a7362a3 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForConsolePrint.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenListenerForConsolePrint.java @@ -1,6 +1,8 @@ package cn.dev33.satoken.listener; -import java.util.Date; +import java.time.Instant; +import java.time.ZoneId; +import java.time.ZonedDateTime; import cn.dev33.satoken.SaManager; import cn.dev33.satoken.stp.SaLoginModel; @@ -50,8 +52,9 @@ public class SaTokenListenerForConsolePrint implements SaTokenListener { */ @Override public void doDisable(String loginType, Object loginId, String service, int level, long disableTime) { - Date date = new Date(System.currentTimeMillis() + disableTime * 1000); - println("账号[" + loginId + "] " + service + " 服务被封禁,封禁等级=" + level + " (解封时间: " + SaFoxUtil.formatDate(date) + ")"); + Instant instant = Instant.ofEpochMilli(System.currentTimeMillis() + disableTime * 1000); + ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(instant, ZoneId.systemDefault()); + println("账号[" + loginId + "] " + service + " 服务被封禁,封禁等级=" + level + " (解封时间: " + SaFoxUtil.formatDate(zonedDateTime) + ")"); } /** diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/util/SaFoxUtil.java b/sa-token-core/src/main/java/cn/dev33/satoken/util/SaFoxUtil.java index ae2bf386..b17ac13a 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/util/SaFoxUtil.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/util/SaFoxUtil.java @@ -4,6 +4,8 @@ import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import java.text.SimpleDateFormat; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -106,6 +108,15 @@ public class SaFoxUtil { public static String formatDate(Date date){ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date); } + + /** + * 将日期格式化 (yyyy-MM-dd HH:mm:ss) + * @param zonedDateTime 日期 + * @return 格式化后的时间 + */ + public static String formatDate(ZonedDateTime zonedDateTime) { + return zonedDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + } /** * 从集合里查询数据 diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/util/SaFoxUtilTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/util/SaFoxUtilTest.java index a25175f3..4c2f9404 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/util/SaFoxUtilTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/cn/dev33/satoken/core/util/SaFoxUtilTest.java @@ -1,8 +1,10 @@ package cn.dev33.satoken.core.util; +import java.time.Instant; +import java.time.ZoneId; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.Arrays; -import java.util.Date; import java.util.List; import org.junit.jupiter.api.Assertions; @@ -51,8 +53,10 @@ public class SaFoxUtilTest { @Test public void formatDate() { - String formatDate = SaFoxUtil.formatDate(new Date(1644328600364L)); - Assertions.assertEquals(formatDate, "2022-02-08 21:56:40"); + Instant instant = Instant.ofEpochMilli(1644328600364L); + ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(instant, ZoneId.of("Asia/Shanghai")); + String formatDate = SaFoxUtil.formatDate(zonedDateTime); + Assertions.assertEquals(formatDate, "2022-02-08 21:56:40"); } @Test