2013-07-22 55 views
4

我必須分析字符串的方法(YYYY-MM-DD HH:MM:SS.SSS)根據使用的SimpleDateFormat Date對象。的SimpleDateFormat到時間戳失去精度的getTime()方法

public static Timestamp convertToTimestamp(String stringToFormat) { 
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); 
    try { 
     Date date = dateFormat.parse(stringToFormat); 
     Timestamp tstamp = new Timestamp(date.getTime()); 
     return tstamp; 
    } 
    catch (ParseException e) { 
     return null; 
    } 
} 

然而,當毫秒0結束,例如, 「2013年7月7日19:15:00.000」,當我執行以下操作將其分配到一個Timestamp對象:

Timestamp tstamp = new Timestamp(date.getTime()); 

輸出如下2013-07-07 19:15:00.0

有沒有什麼辦法讓我的毫秒精度保持三位小數?我意識到我可能會做一些長度檢查和手動添加0,但保持此精度的更高效,標準的方法將是首選

+0

'時間戳#的toString()'明確截斷尾隨零;你不會失去任何精度。 – DannyMo

回答

3

精度不會丟失:尾隨零被簡單截斷。

Date dt = new Date(); 

dt.setTime(123); //123 milliseconds 
Timestamp tstamp = new Timestamp(dt.getTime()); 
System.out.println("tstamp = " + tstamp); 

dt.setTime(0); //0 milliseconds => truncated 
tstamp = new Timestamp(dt.getTime()); 
System.out.println("tstamp = " + tstamp); 

它打印:

你可以驗證它

tstamp = 1970-01-01 01:00:00.123 
tstamp = 1970-01-01 01:00:00.0 
+0

我的錯誤,現在編輯爲毫秒 – deanmau5