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”)。
更新 :我发现这个问题也应该对你有帮助。