2012-06-21 42 views
0

我有一些的java.sql.Time對象如下:如何對java.sql.Time對象執行算術?

String s1 = "12:00:04"; 
    String s2 = "12:23:34"; 
    String s3 = "12:03:02"; 
    String s4 = "11:00:54"; 

    int dij = j-i; 
    int dmj = j-m; 
    java.sql.Time tdi = java.sql.Time.valueOf(s1); 
    java.sql.Time tki = java.sql.Time.valueOf(s2); 
    java.sql.Time tdm = java.sql.Time.valueOf(s3); 
    java.sql.Time tdj = java.sql.Time.valueOf(s4); 

我如何執行這些對象的減法運算?我想在java.sql.Time對象本身中獲取結果,但秒數也可以工作。 java.sql.Time類中給出的大多數方法都被棄用。 http://docs.oracle.com/javase/7/docs/api/java/sql/Time.html

+1

算術簡單得多使用[日曆對象(http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Calendar.html ) – AurA

回答

3

由於java.sql.Time封裝了java.util.Date,我不知道是減法,並把結果在java.sql.Time對象是有意義

我寧願進行相減(最有可能使用的毫秒字段和getTime訪問),並將結果作爲數字表示的秒/毫秒等

如果執行了很多數量的算術,解決方案最有可能看Joda-Time。請參閱arithmetic-related信息的常見問題。 Joda-Time有一個更加一致和有用的API,加上是線程安全的(不像標準java.util.Date/Calendar

+0

Joda-Time +1 –

1

我建議你使用Joda Time java library這非常擅長處理Java中的日期和時間。

例如:

public boolean isRentalOverdue(DateTime datetimeRented) { 
    Period rentalPeriod = new Period().withDays(2).withHours(12); 
    return datetimeRented.plus(rentalPeriod).isBeforeNow(); 
}