2013-10-24 359 views
0

考慮以下代碼: -Java的日期和時間戳

 String t = "2013-10-05 09:10:37.029074"; 
     Timestamp ts = Timestamp.valueOf(t); 

     Date d = new Date(ts.getTime()); 
     Timestamp ts2 = new java.sql.Timestamp(d.getTime()); 
     System.out.println("ts -->"+ts); 
     System.out.println("ts2-->"+ts2); 

當我運行它,我得到的結果。

ts -->2013-10-05 09:10:37.029074   ts2-->2013-10-05 09:10:37.029 

我不想忽略milisecods(請參閱029074和029之間的差異)。它似乎是四捨五入的。

我想保留連分數。

+0

如果你必須保持微秒的精度,是否有一個特定的原因你必須**使用日期? – Craig

+0

看那裏 - 我希望它可以幫助http://stackoverflow.com/questions/1712205/current-time-in-microseconds-in-java – YAMM

回答

5

Date類只有毫秒精度。它不能存儲更高的精度。

Javadocs for Date

類Date表示特定的瞬間,精確到毫秒。

2

Timestamp具有nanosecond精度。 java.sql.Datejava.util.Date只有毫秒的精度。一旦你將Date帶入遊戲中,你將失去精確度。

所以,只要保持Timestamp左右,並用getTime來抓住它的毫秒來做任何你需要做的事情,但要確保你堅持下去。