JSP / JAVA-从数据库中添加8小时的时间并在不保存到数据库的情况下显示它

时间:2015-10-05 08:49:25

标签: java jsp

现在,我的数据库存储事务记录并保存在事务日期和时间中,但现在我想通过添加8小时但不保存到数据库中来显示它。我该怎么做呢?..

我想只是对jsp进行更改。

目前,检索时间的代码是

 <td align=right><%= tradePosition[i].getDate()!=null? tradePosition[i].getDate() :"" %></td>

2 个答案:

答案 0 :(得分:0)

根据你的澄清:

<%
    Timestamp time = null;
    if (tradePosition[i].getDate() != null) {
        time = new Timestamp(tradePosition[i].getDate().getTime() + 8 * 60 * 60 * 1000);
    } 
%>
<td align=right><%= time != null ? time : "" %></td>

基于此question

这是时间戳类API

请注意这种方法可能会遇到一些问题,如问题所指出的那样,跳跃时间和时区有一些问题,但对于非关键用例来说,这通常是足够好的。如果这对于正确处理很重要,我建议保留一些正确的Date变量而不是Timestamp(或者可以将它作为@transient中的时间戳添加到类中。)

答案 1 :(得分:0)

理想情况下,您的时间添加应该在重定向到JSP的Servlet中完成。

if (tradePosition[i].getDate() != null) {
  Calendar cal = Calendar.getInstance();

  cal.setTime(tradePosition[i].getDate());
  cal.add(Calendar.HOUR, 8);

  request.setAttribute("displayDate", cal.getTime());
}

然后JSP将使用JSP EL显示日期

<td align=right>${displayDate}</td>

请注意您不再需要使用EL进行笨拙的null检查。

如果您正在使用Timestamp,请使用毫秒来设置初始时间。

cal.setTimeInMillis(tradePosition[i].getDate().getTime());
cal.add(Calendar.HOUR, 8);