Struts2日期标记TimeZone行为

时间:2014-04-09 14:43:10

标签: java date struts2 timezone utc

我正在使用struts2的<s:date>标记。

要将以UTC时间存储04/09/2014 11:40:17的日期转换为IST时间,我使用了struts2 date标记,如下所示:

<s:date name = "dateregistered" 
      format = "MM/dd/yyyy HH:mm:ss a" 
    timezone = "GMT+5.30" />

它总是给我一个日期:04/09/2014 06:10:17 AM

预期结果应为:04/09/2014 05:10:17 PM

我没有得到我错在哪里并且犯了错误,我正在使用hibernate来获取并java.util.date来存储上面使用的值

数据存储和重试的过程:

我通过hibernate在mysql中存储了值:

TimeZone.setDefault(TimeZone.getTimeZone("Etc/UTC"));
user.setCreatedDateTime(new java.util.Date());
...
...
...

现在我从DB获取04/09/2014 11:40:17的值。执行此插入时,实际时间为04/09/2014 05:10:17 PM IST。因此,它清除了存储在DB中的时间是UTC时间。

现在我正在重温时间并在键值对中设置地图map.put("dateregistered",c.getCreatedDateTime());

user.getCreatedDateTime()

并使用struts 2标记检索值,如上所述

1 个答案:

答案 0 :(得分:2)

  1. 使用:代替.作为分隔符;
  2. 添加领先0
  3. IST (Indian Standard Time)的正确时区为UTC+05:30,然后为GMT+05:30;

    <s:date name = "dateregistered" 
          format = "MM/dd/yyyy HH:mm:ss a" 
        timezone = "GMT+05:30" />