我以這種格式解析“日期”:@JsonProperty("earliest_pick_up_time")@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm", timezone = "Europe/Berlin")private Date earliestPickUpTime;但它并不是真正的日期,因為來源是小時和分鐘,例如 14:43 或 16:12 等。這里的時區是什么?什么時區?服務器?裝置?我是否需要計算設備的位置,以便它始終正確顯示?在這種情況下,無論用戶是在柏林還是澳大利亞,14:43 都是 14:43。我需要知道服務器的位置嗎?用戶提前設置了這個時間和日期,那么時區是指那個嗎?如果我沒有明確設置時區,我會得到錯誤的日期?,F在我將時區設置為我的時區,但我不確定這是否正確。
2 回答

富國滬深
TA貢獻1790條經驗 獲得超9個贊
日期可能不是一個好對象,因為您必須解析 HH:mm。
日期表示 1/1/1970 UTC 之后的某個時間實例。你不能用 0-23 的一個小時來表示
您可能應該考慮制作自定義 HourMinute 對象和自定義反序列化器/序列化器
您還會將時區視為某種偏移量。
如果我在柏林并且我將最早的接送時間設置為 1.00 怎么辦
紐約時間是-5am嗎?

蕪湖不蕪
TA貢獻1796條經驗 獲得超7個贊
服務器的時區和客戶端的時區可以不同。我會將服務器的默認時區設置為 UTC。隨著時間的推移,我會強制客戶端在每個請求中發送時區信息(可能作為請求參數或標頭)。在服務器中,我會將其解析為 UTC 并將其作為時間戳保留在 db 中。從數據庫中檢索時,它將是 UTC。我會再次轉換為客戶的時區并將其發回。
所以理想情況下,只要您設置服務器的默認時區,服務器的位置就無關緊要。您可以直接在服務器中設置它或在啟動時在應用程序中設置它。然而,客戶的位置真的很重要。您可能希望在他們自己的時區向他們顯示時間。不要手動添加時區偏移量。使用內置框架來處理夏令時等。
添加回答
舉報
0/150
提交
取消