From 462b9a1b87d20f47a7adf7494856437223735e89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Thu, 13 Feb 2025 18:36:52 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DUTC=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E8=BD=AC=E4=B8=BA=E5=BD=93=E5=9C=B0=E6=97=B6=E9=97=B4=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/test/java/LocalDateTimeTest.java | 19 +++++++++++++++++++ .../handler/UTCLocalDateTimeTypeHandler.java | 8 +++++--- 2 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 nflg-mobilebroken-common/src/test/java/LocalDateTimeTest.java diff --git a/nflg-mobilebroken-common/src/test/java/LocalDateTimeTest.java b/nflg-mobilebroken-common/src/test/java/LocalDateTimeTest.java new file mode 100644 index 00000000..695dcbec --- /dev/null +++ b/nflg-mobilebroken-common/src/test/java/LocalDateTimeTest.java @@ -0,0 +1,19 @@ +import org.junit.jupiter.api.Test; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZoneOffset; +import java.time.ZonedDateTime; + +public class LocalDateTimeTest { + + @Test + public void test() { + LocalDateTime now = LocalDateTime.now(); + System.out.println(now); + ZonedDateTime utcZoned = now.atZone(ZoneOffset.UTC); + ZonedDateTime shanghaiZoned = utcZoned.withZoneSameInstant(ZoneId.of("Asia/Shanghai")); + LocalDateTime shanghaiDateTime = shanghaiZoned.toLocalDateTime(); + System.out.println(shanghaiDateTime); + } +} diff --git a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/handler/UTCLocalDateTimeTypeHandler.java b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/handler/UTCLocalDateTimeTypeHandler.java index 1b042cb0..296b043f 100644 --- a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/handler/UTCLocalDateTimeTypeHandler.java +++ b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/handler/UTCLocalDateTimeTypeHandler.java @@ -11,6 +11,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.time.LocalDateTime; import java.time.ZoneId; +import java.time.ZoneOffset; import java.util.Objects; /** @@ -24,7 +25,7 @@ public class UTCLocalDateTimeTypeHandler extends BaseTypeHandler public void setNonNullParameter(PreparedStatement ps, int i, LocalDateTime parameter, JdbcType jdbcType) throws SQLException { // 将本地时间转换为 UTC 时间 LocalDateTime utcTime = parameter.atZone(ZoneId.systemDefault()) - .withZoneSameInstant(ZoneId.of("UTC")) + .withZoneSameInstant(ZoneOffset.UTC) .toLocalDateTime(); ps.setObject(i, utcTime); } @@ -55,8 +56,9 @@ public class UTCLocalDateTimeTypeHandler extends BaseTypeHandler return null; } String zone = MultilingualUtil.getZone(); - return utcTime.atZone(ZoneId.of(Objects.isNull(zone) ? "Asia/Shanghai" : zone)) - .withZoneSameInstant(ZoneId.systemDefault()) + return utcTime + .atZone(ZoneOffset.UTC) + .withZoneSameInstant(ZoneId.of(Objects.isNull(zone) ? "Asia/Shanghai" : zone)) .toLocalDateTime(); } } \ No newline at end of file