明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

靈活掌握Date與Time

[摘要]Java的Date和Time函數(shù)-java.sql.Date 和java.sql.Time只是從數(shù)據(jù)庫讀取某幾個值,因此有時會造成丟失數(shù)據(jù)。例如日期和時間2002/05/22 5:00:57 PM ...
Java的Date和Time函數(shù)-java.sql.Date 和java.sql.Time只是從數(shù)據(jù)庫讀取某幾個值,因此有時會造成丟失數(shù)據(jù)。例如日期和時間2002/05/22 5:00:57 PM 只會顯示成 2002/05/22 或5:00:57 PM 。

我們應該了解每種數(shù)據(jù)庫對日期的保存精度。有的數(shù)據(jù)庫,如MySQL 保存精度是毫秒級,而其他一些包括Oracle無法精確到毫秒級。以下的一些操作會因為這種區(qū)別而引發(fā)問題:
  • 獲取Java 日期。
  • 從數(shù)據(jù)庫中讀出日期
  • 試圖使用equals( ) 函數(shù)來匹配新舊Java日期。如果沒有找到毫秒數(shù),equals 方法會返回false

java.sql.Timestamp 比 java.util.Date 類更精確。它包含了一個名為 getTime( ) 的方法,不過并不返回精確度,因此你還要使用getNanos( ) :

long time = timestamp.getTime() + timestamp.getNanos()/1000000;

由于附加了十億分之一秒(nanosecond)的精確度,因此java.sql.Timestamp 永遠不會和java.util.Date匹配,當然 java.util.Date可以匹配 java.sql.Timestamp。

使用java.sql.Time 相關的類很重要也很簡單。但它也會造成錯誤,因為雖然javadoc里很清楚地寫明他們之間的區(qū)別,可是這兩者還是太像了。