2011-12-02 62 views
0

我已經讀了this的問題,似乎相當長的囉嗦,特別是因爲我想要做很多,並避免使用java.util.date類型。我基本上希望能夠將特定時間的任意時間值加上和減去,例如(0220 + 3小時45分鐘)。我最好的辦法是將值轉換爲「長」類型然後執行算術,但我相信這不是要走的路。 (可能的溢出和轉換回不準確?) 只需要最佳方式的想法做到這一點。對java.sql.Time類型執行Time Arithimetic的最佳方式是什麼?

回答

1

我認爲移動到long,然後添加代表「3小時45分鐘」的適當數量的毫秒將工作正常。沒有辦法讓它溢出,除非你增加足夠的毫秒來溢出64位長 - 這是很多毫秒。

long millis = time.getTime(); 
millis += 3 * 3600 * 1000; 
millis += 45 * 60 * 1000; 
time = new java.sql.Time(millis); 

另一種方法是使用美妙的喬達時間的方法,這將在一定程度上更昂貴,但肯定更加readible /易:

org.joda.time.DateTime dateTime = new DateTime(time.getTime()); 
dateTime = dateTime.plusHours(3).plusMinutes(45); 
time = new java.sql.Time(dateTime.getMillis()); 
+0

感謝您使用喬達建議 –

相關問題