[英]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.