0

我正在使用表详细信息的显示标签我想将日期和时间更改为用户的本地浏览器设置,DB 中的数据是 UMT。如果用户来自印度,那么它将添加 +5:30 等。我该怎么做。我陷入了困境。请帮我。

4

2 回答 2

0

聚会有点晚了,但仍然在这里回答以防其他人需要它。

Display.tagMessageFormatColumnDecorator在内部使用将MessageFormat格式化程序应用于具有“格式”参数集的所有列。

因此,您的选择是:

  1. 创建您自己的自定义MessageFormatColumnDecorator。不幸的是,它包含在ColumnTag代码中并且不能很容易地替换(装饰器被链接),因此您必须编译自己的 Display.Tag jar 副本,其中包含您的自定义装饰器。

在您的自定义装饰器中,使用以下示例代码更改MessageFormat时区:

TimeZone tz = //get your timezone here
Object [] formats = format.getFormats(); //'format' is MessageFormat instance
for (int i = 0; i < formats.length; i++) {
  if (formats[i] instanceof SimpleDateFormat) {
    ((SimpleDateFormat)formats[i]).setTimeZone(tz);
  }
}
  1. 第二个选项是使用<fmt:formatDate>Display.tag 内的列标签来格式化输出。

示例代码:

<display:table name="dateList" id="object">
  <display:column title="Date">
    <fmt:formatDate value="${object.date}" type="both" dateStyle="long" timeStyle="long"/>
  </display:column>
</display:table>

您可以为它们设置默认请求区域设置<fmt:formatDate>或将它们包装在<fmt:timeZone>标签中以设置它们使用的时区。

于 2014-11-08T08:13:39.250 回答
0

你试过这样吗??

Locale cLoc=request.getLocale();
Calendar cCal=Calendar.getInstance(cLoc);
TimeZone tz=cCal.getTimeZone(); 
//......
于 2013-03-04T15:03:45.950 回答