我正在嘗試從 JSP 表單接收日期,其中用戶輸入事件開始的日期和時間。每個事件都將在那個時刻發生(即它將由一個OffsetDateTime物件表示,因此它可以存盤在我的資料庫中)。在我看來,到目前為止,我從用戶那里獲取日期/時間的選項是要么一起使用<form:input type="date"/>&要么,這兩者都不提供準確表示事件發生時刻所需的偏移量。有沒有辦法在不明確提示用戶他們的時區的情況下收集這個偏移量?<form:input type="time"/><form:input type="datetime-local"/>
我擔心的是以下情況:另一個時區的用戶為事件提供日期和時間。然后,我的控制器使用此日期/時間生成java.time要存盤在資料庫中的物件。但是,在不知道用戶的偏移量是多少的情況下,我無法知道對時間戳進行的正確調整,而是將其解釋為我的本地時間。
uj5u.com熱心網友回復:
如評論中所述,您可以嘗試從瀏覽器獲取偏移量。
但實際上,您應該與用戶驗證預期的時區。
時區以的格式命名Continent/Region,例如Europe/Paris或Africa/Tunis。因此,您可以輕松制作分層區域選擇器。
對于關鍵任務,例如用戶輸入要在特定日期和時間發生的事件,您不應僅依賴默認值。例如,您的用戶可能是居住在法國的德國女商人,目前正在日本東京參加會議,輸入要在美國芝加哥舉行的活動。無論是她的家鄉時區,還是她的當前位置,都不會指示正在針對該時區呈現事件America/Chicago。
String userSelectedContinent = … ;
String userSelectedRegion = … ;
String zoneName = String.join( "/" , userSelectedContinent , userSelectedRegion ) ;
ZoneId z = null ;
try {
z = ZoneId.of(
} catch ( DateTimeException e ) {
…
} catch ( ZoneRulesException e ) {
…
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/504212.html
