显示标记在浏览器Jsp中显示用户的本地时间

时间:2013-03-04 14:05:29

标签: java mysql jsp localization displaytag

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

2 个答案:

答案 0 :(得分:0)

你有没有试过这个?

Locale cLoc=request.getLocale();
Calendar cCal=Calendar.getInstance(cLoc);
TimeZone tz=cCal.getTimeZone(); 
//......

答案 1 :(得分:0)

派对有点晚了,但是如果其他人需要的话,仍然会在这里回答。

Display.tag在内部使用MessageFormatColumnDecoratorMessageFormat格式化程序应用于具有"格式"的所有列。参数集。

所以,你的选择是:

  1. 创建您自己的自定义MessageFormatColumnDecorator。不幸的是它在ColumnTag代码中被包含在内并且不能很容易地被替换(装饰器被链接),所以你必须编译自己的Display.Tag jar副本,其中包含你的自定义装饰器。
  2. 在自定义装饰器中,使用以下示例代码更改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. 第二个选项是使用Display.tag列标记中的<fmt:formatDate>来格式化输出。
    2. 示例代码:

      <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>标记中以设置他们使用的时区。