JSP 我可以从HTML表单解析OffsetDateTime而不要求偏移吗?

vuktfyat  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(98)

我尝试从JSP表单接收一个日期,用户在该表单中输入事件开始的日期和时间。(也就是说,它将由一个OffsetDateTime对象来表示,这样它就可以存储在我的DB中)。<form:input type="time"/>一起或<form:input type="datetime-local"/>,这两个值都不提供准确表示事件发生时刻所需的偏移量。是否有一种方法可以在不显式提示用户输入时区的情况下收集此偏移量?
我担心的是以下情况:另一个时区的用户为一个事件提供了一个日期和时间。我的控制器使用这个日期/时间生成一个java.time对象并存储在数据库中。但是,在不知道用户的偏移量是多少的情况下,我无法知道对时间戳所做的正确调整,它将被解释为我的本地时间。

svdrlsy4

svdrlsy41#

您可以尝试从浏览器中获取偏移量,如注解中所述。
但实际上,您应该与用户验证预期的时区
Time zones are named,格式为Continent/Region,例如Europe/ParisAfrica/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 ) {
    …
}

相关问题