Postgresql日期类型和java SimpleDateFormat

我有一个类型为date的数据库列,其值如下

2014-05-01 

然后我有以下hibernate映射:

 @Temporal(TemporalType.DATE) @Column(name = "end_date", nullable = false, length = 13) public Date getEndDate() { return this.endDate; } public void setEndDate(Date endDate) { this.endDate = endDate; } 

当我以下列方式在JSF页面中引用此日期时

    

它读作为

 '30 Apr 2014' 

所以我删除了f:convertDateTime,它显示:

 '5/1/2014' 

所以我然后将f:convertDateTime更改为:

    

它写道:

 '23:00 30 Apr 2014' 

所以我的猜测是我的电脑设置为BST(英国夏令时),并且数据库中的日期以某种方式设置为GMT(或祖鲁时间),以便-1小时使日期返回到前一天的时间?

有没有办法阻止这种情况发生,我只是想把它当作一个日期,没有时间组件!

您也应该指定时区(以及安全的英语语言环境):

    

因此我假设输入是UTC时区(即文字日期最初是相对于UTC存储的),因此对输出格式使用相同的偏移量不会更改日期(以及“5/1/2014的中间输出”) “只是由相同的偏移效果改变的默认美国格式。

如果您使用其他时区转换存储了日期,则必须调整timeZone属性(例如“Europe / London”)。

更新 :我发现这个问题也应该对你有帮助。