我使用 Spring Data(postgresql)在 Spring Boot 上撰寫應用程式。
我有以下案例。我想存盤在 UTC 時區的資料庫時間,并將其決議為/從 dto 中的“美國/圣保羅”時區。
例如:在控制器中,我在美國/圣保羅時區使用 LocalDateTime 獲得 dto。我想將它保存在 UTC 時區的資料庫中。
從 dto 映射到物體時,我可以做到。但也許還有另一種簡單的方法,比如設定 hibernate/spring 的一些屬性?
uj5u.com熱心網友回復:
從 Java 8 開始,我們在java.time!
(1)轉換在注釋的時區@PrePersist,@PreUpdate和@PostLoad方法。
例如,在 annotated 中@PostLoad,從 UTC 轉換為 America/San-Paulo。
private static ZoneId UTC_ZONE = ZoneId.of("UTC");
private static ZoneId LOCAL_ZONE = ZoneId.of("America/San_Paulo");
private LocalDateTime dateTime;
@PostLoad
public void toLocal() {
dateTime = dateTime.atZone(UTC_ZONE).withZoneSameInstant(LOCAL_ZONE).toLocalDateTime();
}
(2) 假設您使用的是 Jackson,您可以撰寫自定義序列化器/反序列化器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/369934.html
