【发布时间】:2012-06-01 20:18:55
【问题描述】:
我在使用 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 不要转换从数据库读取的时间戳?
【问题讨论】: