我在使用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的日期。我將它轉換爲時間戳,並在圖表上使用它。 –
剛剛在原始問題中添加了一個示例。 –