播放框架:如何定义用户输入日期的时区?

时间:2012-03-05 17:25:20

标签: data-binding date playframework timezone

在我的Play框架应用程序中,用户可以选择输入日程安排的日期,然后将日期映射到我的模型实体:

@InFuture
@As("dd/MM/yyyy HH:mm")
public Date validFrom;

这是

形式的字段
<input type="text" name="schedule.validFrom" placeholder="dd/mm/yyyy hh:mm">

问题是我们的服务器在非本地时区运行,时区应该从正在进行此计划的对象中获取。

所以我事先知道这个时间表的时区是什么,我不希望用户必须在该字段中输入时区。

一个可能的解决方案是将日期作为字符串提交并进行手动验证和解析,但我想知道是否有更好的解决方案。

3 个答案:

答案 0 :(得分:2)

手动解析可能是您的最佳选择 您可以创建自己的对象,其中包含日期和时区 然后根据InFutureCheck实施您自己的验证检查并执行时区转换。

答案 1 :(得分:0)

更好的选择是为用户提供一个时区下拉列表。例如:

String TIMEZONE_ID_PREFIXES ="^(Africa|America|Asia|Atlantic|Australia|Europe|Indian|Pacific)/.*";
String[] ids = TimeZone.getAvailableIDs();
Timezone tz = null;
for (int i=0; i<ids.length; i++) {
  if (ids[i].matches(TIMEZONE_ID_PREFIXES)) {  
    //add TimeZone.getTimeZone(ids[i]).getDisplayName() to a drop down list
  }
} 

答案 2 :(得分:0)

这里的最佳做法实际上取决于您的用户是否需要查看多个时区。