我在數據庫中的數據在UTC
時區和客戶端上的一些特定於時區的邏輯。在春天設置每個請求的時區
有一個從服務器在用戶的時區返回數據的決定,所以有流程:
- 客戶端檢測到用戶的時區通過javascript
- 將其發送在自定義首部(即
"X-TIMEZONE"
) - 服務器截取請求(在
Filter
)和設置當前時區爲它(每個請求) - 服務器處理的轉換和數據返回給用戶在他的時區
所以問題是設置請求範圍的時區,它甚至有可能嗎?
我發現Timezone.setDefault()
設置一般應用程序的時區。
謝謝。
將時區存儲在請求範圍內的Spring bean中,並在必要時使用它(使用日期和時間時)。在JVM中設置請求範圍的時區是不可能的,因爲JVM本身並不知道任何有關範圍的知識。 – Jesper
在Java8中有一個類ZonedDateTime。您可以將區域傳遞給dao並在其中創建分區日期時間。 – Damian0o
實際上,'TimeZone.setDefault'會影響在該JVM中運行的所有應用*的所有線程。這樣做只能作爲最後的手段。而是傳遞一個代表所需時區的對象,並在可選時區參數中使用它。 –