2011-11-10 89 views
2

如何添加/減去兩個時間對象。我有兩個時間對象(到達和離開),格式爲「yyyy/MMM/dd HH:mm:ss」。我需要打印出發時間和到達時間之間的差異。我在下面生成時間廣告:時間和日曆

public String getTime() { 
    Calendar currentDate = Calendar.getInstance(); 
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MMM/dd HH:mm:ss"); 
    return formatter.format(currentDate.getTime()); 
} 

當我需要打印時,是否可以在磨坊獲得時間並進行格式化?

+0

作爲一個方面說明,獲取兩個日期之間(毫秒)的持續時間(毫秒)是非平凡的 - 它取決於年份和時區(當然,這主要是爲了處理夏令時)。相關代碼需要計算出年/月/日等。爲_both_日期,然後處理_those_數字。 –

回答

2

這樣的事情.....

public long getTimeDiff() throws Exception { 
    String arrival = "2011/Nov/10 13:15:24"; 
    String departure = "2011/Jan/10 13:15:24"; 

    SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MMM/dd HH:mm:ss"); 

    java.util.Date date1 = formatter.parse(arrival); 
    java.util.Date date2 = formatter.parse(departure); 

    return date2.getTime() - date1.getTime(); 
} 
4

看看Joda Time庫。

您可以輕鬆減去並添加DateTime和容易地找到間隔:

// interval from start to end 
DateTime start = new DateTime(2004, 12, 25, 0, 0, 0, 0); 
DateTime end = new DateTime(2005, 1, 1, 0, 0, 0, 0); 
Interval interval = new Interval(start, end); 
0

您可以以毫秒爲單位使用getTime方法兩個日曆得到的時間。當您可以將減法結果轉換爲您需要的單位時。如果您要認真研究時間/工期,請查看Joda庫

Upd。你應該調用兩次getTime。返回的第一個對象是Date,當您在Date上調用getTime時,您將獲得較長的值。

0

我會以毫秒爲單位轉換兩個時間/日期對象。然後我會減去它們(我們正在處理多頭)。

然後,我會從結果長值創建一個Date對象。之後,您可以使用Calendar.setDate(Date)構造日曆。

問候!

1

將它們轉換爲日期,然後長和減去,將給予在毫秒的時間差,

Date d1 = DateFormat.parse(time1); 
Date d2 = DateFormat.parse(time2); 
long diffInMilliSeconds = d1.getTime()-d2.getTime();