我在使用JPA从数据库读取日期时遇到问题。我正在使用EclipseLink和PostgreSQLJPA日期和时区混淆
我已经从一个CSV文件填充我的数据库,女巫的日期为字符串(格式为:6/30/2009-23:59:56
)。我用下面snipet将其转换为一个日期对象:如预期
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小时移动。一旦ploted,时间戳转向指向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不转换从数据库中读取的时间戳?
嗨。谢谢回答。聪明的做法确实是错误的(谢谢!),但问题仍然存在。正如我试图澄清,我不显示DateFormat的日期。我将它转换为时间戳,并在图表上使用它。 –
刚刚在原始问题中添加了一个示例。 –