经过大量的实验和搜索,我很确定我已经找到了问题的原因。该日期保存在java.util.Date中,其中包含所有时间和时区。似乎JPA正在从数据库中读取日期2003年9月18日,然后像这样填充日期:“
Thu Sep 18 00:00:00 BST
2003”-请注意,时区已设置为BST,可能是因为它不是由数据库明确设置。无论如何,如果只想看这样的日期,则有必要在JSF页面中格式化输出:
<h:outputText value="#{t.validFrom}"> <f:convertDateTime pattern="dd MMM yyyy"/></h:outputText>但是,这假定时区是机器上当前有效的时区。在我的情况下,时区当前为格林尼治标准时间(因为它是冬天),因此当显示日期“ Bhu 2003 Thu Sep 18
00:00:00 BST”时,它将减去一小时将其转换为GMT,从而显示2003年9月17日。



