2012-11-13 35 views
0

我使用此代碼獲取的開始時間:在安卓/ Java的減去兩倍

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS"); 
      String start_time = sdf.format(cal.getTime()); 

我使用此代碼得到一個結束時間:

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS"); 
      String end_time = sdf.format(cal.getTime()); 

我想要得到的時間已過,所以像start_time - endtime = elapsed_time會很好,但似乎不可能。我在理解對象方面仍然不太擅長,但是我猜想由於字符串是對象,所以我不能輕鬆獲得流逝的時間。什麼是一個簡單的方法來做到這一點,但有elapsed_time作爲一個字符串?

回答

2

在這種情況下,您的最佳選擇可能是喬達時間:http://joda-time.sourceforge.net/ 它有一個Interval類和一個Duration類,可以用來測量時間差。 Interval有一個ReadableDuration,它有一個toString方法來格式化它。

從約達時間文檔:

// 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

儘管它應該是一個評論,除非你展示如何做到這一點約達時間... – NimChimpsky

+0

增加了一些說明,這是否解決您的疑慮@NimChimpsky? –

+1

有點奇怪使用一個單獨的庫,因爲默認情況下Android/Java支持日期減法。 – RvdK

2

,如果你想有:

  • calBegin =日曆設置爲開機時間
  • calEnd =日曆設置結束時間

那麼你可以使用類似於:

long elapsedMs = calEnd.getTime().getTime() - calBegin.getTime().getTime(); 

凡之間經過elapsedMs =毫秒開始和結束

2
Date elapsed= new Date(sdf.parse(end_time).getTime() - sdf.parse(start_time).getTime()); 
     System.out.println(sdf.format(elapsed)); 
  1. 轉換起點和時間時間長的類型。
  2. 做減法。
  3. 使用的SimpleDateFormat得到結果以特定的格式
2

隨着string這是不可能得到的結果轉換爲java.util.Date對象

  • 格式。你應該使用Date對象:

    如果calCalendar

    Date start_date = cal.getTime(); 
    //change to calendar to other date 
    Date end_date = cal.getTime(); 
    long total_time = end_date.getTime() - start_date.getTime(); 
    

    如果cal別的東西好像回到一個String自定義對象:

    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS"); 
    Date start_date = sdf.parse(cal.getTime(), 0); 
    Date end_date = sdf.parse(cal.getTime(), 0); 
    
    long total_time = end_date.getTime() - start_date.getTime(); 
    

    TOTAL_TIME爲以毫秒爲單位的總時間

  • +0

    需要進口什麼?日期或sql?我在猜測日期,但只是確定。 – EGHDK

    +0

    我正在嘗試這個,但是我在解析下得到了一條紅線。 – EGHDK

    +0

    還需要其他參數,請參閱http://developer.android.com/reference/java/text/SimpleDateFormat.html#parse(java.lang.String,java.text.ParsePosition) – RvdK