一个时区到另一个时区转换

时间:2014-11-26 07:22:16

标签: struts2

如何使用<s:date>

将一个时区值转换为另一个时区值

例如我想转换

使用<s:date>代码

的CTS到GMT + 05:30(或IST)

在我的数据库中,我添加了与GMT相关的日期和用户时区值。 我的数据库服务器正在显示时区CTS(我无法继续使用它)。 在这里,我想将日期从CTS时区转换为GMT + 05:30(或IST)的用户时区或存储在数据库中的用户时区

1 个答案:

答案 0 :(得分:1)

对于印度标准时间,这就是:

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

this related question的评论中,您可以了解在处理此问题时可能遇到的常见错误。

日期没有TimeZone。日期只是自特定时间点以来的一个毫秒数(EPOCH:01-01-1970,00:00:00 UTC)。

将日期保存到数据库中时,您只需保存该长号。如果您的数据库具有特定的TimeZone,则意味着当您对其运行查询时,它将使用该TimeZone格式化人类表示的日期。您的数据库,AS中以及框架中都有TimeZone设置。但是通过整个链,Date仍然是相同的Date对象,只是表示不同。

许多数据库允许您save the TimeZone informations along with the date。但既然你说:

  

在我的数据库中,我添加了与GMT相关的日期和用户时区值

然后你绝对可以忽略这个事实

  

我的数据库服务器正在显示时区CTS

只需使用该日期,然后使用所提供的代码将其格式化为所需的TimeZone。

如果这只是让您感到困惑(采用GMT日期,在数据库可视化工具中显示为CTS,并在浏览器中显示为IST),则使用三个不同的时区在操作中将日期三次日志打印,以便整个链之间的匹配,这将帮助您调试应用转换的位置和方式。