我在使用 JPA 从数据库中读取日期时遇到问题。我正在使用 EclipseLink 和 PostgreSQL
我已经从 CSV 文件填充了我的数据库,女巫将日期作为字符串(以这种格式:)6/30/2009-23:59:56
。我使用以下代码片段将其转换为 Date 对象:
public static Date parseDate(String s){
DateFormat formatter = new SimpleDateFormat("d/M/yyyy-k:m:s");
try {
return new Date( ((java.util.Date)formatter.parse(s)).getTime() );
} catch (ParseException ex) {
Logger.getLogger(Type.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
}
日期按预期正确转换并存储在数据库中。这是我将 Date 对象映射到数据库的方法:
@Column(name="data_ts", nullable=false)
@Temporal(TemporalType.TIMESTAMP)
private Date dataTs;
当我尝试从数据库中读取日期以在图表(Highcharts)中使用它时,问题似乎发生了。上面具有相同时间戳的记录被读取为:
Mon Jun 06 23:59:56 BRT 2011
它的时间戳为1307415596000
请注意,它是巴西时间 (+3h),因此时间戳(从 GMT 计算)偏移了 3 小时。绘制后,时间戳变为指向07/06/2011 02:59:56
这是一个例子:
List<TimedataEnt> timeData = currentWellsite.getTimeData();
String debug = timeData.get(timeData.size()-1).getDataTs().toString() + ">>>" + timeData.get(timeData.size()-1).getDataTs().getTime();
currentWellsite和 JPA 实体在哪里,并getDataTs()
返回 java.util.Date 对象。字符串原来是"Tue Jun 30 23:59:56 BRT 2009>>>1246417196000"
如何告诉 JPA 不要转换从数据库读取的时间戳?