【发布时间】:2021-11-02 20:49:01
【问题描述】:
请原谅,我已经稍微更新了问题以进行详细说明。
我有一个配置为运行 UTC + 3(伊斯坦布尔)的 Angular 客户端 它调用了我在 UTC + 5(亚洲/卡拉奇)运行的服务器
我一直在使用 SpringJPA 和以下配置的 Spring boot
spring.jackson.deserialization.adjust-dates-to-context-time-zone=true
spring.jackson.time-zone=Asia/Karachi
spring.jpa.properties.hibernate.jdbc.time_zone=UTC
我的数据库(MySql)在 UTC 中运行 即使 LocalDateTime 无法满足时区差异,Date 的结果也可以正常工作。 (我不怀疑 LocalDateTIme 而是 Java.Util.Date)
另外,我没有为实体中的 Date 属性添加任何特殊注释
Once REST API 调用记录日期
date Sun Sep 05 18:00:00 PKT 2021
DataType `date` DATETIME NULL 已用于 DB
那么 DB 中的结果如下,它是 UTC
我对 OffsetDateTime 和 ZonedDateTime 有相同的结果,但这很明显,因为两者都带有偏移量。但我需要解释一下日期。
谢谢。
【问题讨论】:
-
这并不矛盾:
java.util.Date的实例不携带任何时区信息,但这并不意味着它不使用 i> JVM 默认时区。 -
Andy Turner 的评论是指
java.until.Date类的toString方法在生成字符串时应用了 JVM 当前的默认时区。相当误导。从不使用该类的众多原因之一。仅使用 java.time 类。