簡體   English   中英

Java / Hibernate 時間戳受夏令時影響,盡管 UTC

[英]Java / Hibernate Timestamp being affected by daylight savings despite UTC

我從 Postgres 查詢到 Java。

我已將 Postgres 和 Java 都設置為使用“UTC”。

但是,當我出於某種原因進行查詢時,日期會受到夏令時跳躍的影響。

我將 hibernate 設置為 UTC。 (pom.xml)。

<properties>
    <spring-boot.run.jvmArguments>-Duser.timezone=UTC</spring-boot.run.jvmArguments>
    <property name="hibernate.jdbc.time_zone" value="UTC"/>
</properties>

我將我的 postgres 時區設置為 UTC。 timezone = 'UTC' (restarted service) 當我查詢 postgres 時,我沒有得到問題。 此外,當我在 java 中手動設置日期然后遞增時,我沒有得到問題。

似乎只有當我出於某種原因查詢和使用 hibernate 時,它才會在短時間內“忽略”UTC 並跳過一小時。

我可能能夠做一些激烈的事情,比如在數據庫中使用 char 與時間戳,所以 hibernate 不會混淆,但這似乎很激烈,我一定缺少一些簡單的東西嗎?

更新:因此將所有邏輯移動到存儲過程並在那里解決問題。 我會 go 說這可能是 hibernate 的錯誤。 我已將 hibernate 設置為使用應該排除時區的 UTC?

所以在嘗試了很多事情之后,它看起來像在做:

TimeZone.setDefault(TimeZone.getTimeZone("UTC"));

像一些 SO 線程建議的那樣工作

但是這樣做:

<properties>
    <spring-boot.run.jvmArguments>-Duser.timezone=UTC</spring-boot.run.jvmArguments>
    <property name="hibernate.jdbc.time_zone" value="UTC"/>
</properties>

什么也沒做。 我已經看到許多 SO 線程表明 JVM 中的屬性更改,但根據我的經驗,只有 TimeZone.setDefault 可以做任何事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM