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

JSP/JAVA—添加8小时从数据库中检索的时间,并在不保存到数据库的情况下显示它,java,jsp,Java,Jsp,现在,我的数据库存储事务记录并保存在事务日期和时间中,但现在我想通过添加8小时来显示它,但不保存在数据库中。我怎样才能做到 我想只需要对jsp进行更改 当前,检索时间的代码是 <td align=right><%= tradePosition[i].getDate()!=null? tradePosition[i].getDate() :"" %></td> 根据您的说明: <% Timestamp time = null; if (

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

我想只需要对jsp进行更改

当前,检索时间的代码是

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

根据您的说明:

<%
    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>

基于此

这是Timestamp类


请注意,正如问题中所指出的,这种方法可能在闰时和时区方面存在一些问题,但对于非关键用例来说,它通常已经足够好了。如果这对正确处理很重要,我建议保留一些适当的日期变量,而不是时间戳(或者在类中作为
@transient
的时间戳之外保留它)。

理想情况下,时间添加应该在重定向到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将使用JSPEL显示日期

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

您正在寻找类似以下内容:tradePosition[i].getDate().addHours(8)-这取决于.getDate()返回的内容。是Java类吗?还是您自己的自定义类?或者一些自定义字符串?bean中的getDate声明只是获取并设置Date函数,以便获取和检索数据,因为我将变量声明为private。public Timestamp getDate(){return date;}它不工作…时间仍然显示数据库时间…没有添加8小时…啊,对不起-我以为setTime在编辑后会返回时间戳本身。睡眠是必需的,正如我在其中一个编辑中所写:)让我修复这个。系统错误。。。或者它与我的经纪人编码问题有关…因为当前的功能是选择截止日期,然后过滤在此期间进行交易的人员,通过添加8小时显示出来…但不存储在数据库中您会遇到什么错误?也许您需要在JSP页面的导入中包含时间戳。本质上,在JSP中显示更新后的值适合您的场景,因为它不会更改实际存储的值。另外,我对代码做了一些调整;尝试使用更新的代码+正确的导入-如果仍然存在错误,请显示它。
我在我的代理中成功地使用它是'bean.setDate(rs.getTimestamp(“tp_date”);'设置从rs筛选数据和jsp获取检索的日期…但我没有通过添加8小时来显示时间,因为当前GMT为0,现在nid显示在GMT 8中
cal.setTimeInMillis(tradePosition[i].getDate().getTime());
cal.add(Calendar.HOUR, 8);