2017-06-03 122 views
1

我想知道如何計算兩個時間戳(小時,分鐘,秒)之間的流逝時間。這是結果:Java/Android - 計算時間戳之間的差異

String starttime = beginElement.getTimestamp(); 
String endtime = element.getTimestamp(); 

I /開始時間:1496258892612

I /結束時間:1496258928999

long diffTime = Long.parseLong(endtime) - Long.parseLong(starttime); 

I/DIFF時間:36387

String elapsedtime = new SimpleDateFormat("hh:mm:ss").format(Long.parseLong(String.valueOf(diffTime))); 

I /已用時間:01:00:36

事實上,流逝的時間只有36秒。總是比結果少一小時。

我該如何解決這個奇怪的問題?

+0

閱讀https://stackoverflow.com/questions/21285161/android-difference-between-two-dates –

回答

2

您正在使用的API錯誤,分析是不是你所需要的,因爲那個時候是不相關的日期,而是歷時期,而不是....

做這樣的事情:

String periodAsHH_MM_SS = String.format("%02d:%02d:%02d", 
     TimeUnit.MILLISECONDS.toHours(diffTime), 
     TimeUnit.MILLISECONDS.toMinutes(diffTime) % TimeUnit.HOURS.toMinutes(1), 
     TimeUnit.MILLISECONDS.toSeconds(diffTime) % TimeUnit.MINUTES.toSeconds(1)); 

System.out.println("Duration in hh:mm:ss is: "+periodAsHH_MM_SS); 
+0

謝謝!這個伎倆。 –

+0

不客氣 –

0

您需要設置GMT時間,試試這個:

SimpleDateFormat sd = new SimpleDateFormat("HH:mm:ss"); 
    sd.setTimeZone(TimeZone.getTimeZone("GMT")); 
    String elapsedtime = sd.format(diff); 
0

剛剛嘗試這一點

Date dt1 = new Date(starttime); 
Date dt2 = = new Date(endtime); 

     long diff = dt2.getTime() - dt1.getTime(); 
     long diffSeconds = diff/1000 % 60; 
     long diffMinutes = diff/(60 * 1000) % 60; 
     long diffHours = diff/(60 * 60 * 1000); 
     int diffInDays = (int) ((dt2.getTime() - dt1.getTime())/(1000 * 60 * 60 * 24)); 

     if (diffInDays > 1) { 
      System.err.println("Difference in number of days (2) : " + diffInDays); 
      return false; 
     } else if (diffHours > 24) { 

      System.err.println(">24"); 
      return false; 
     } else if ((diffHours == 24) && (diffMinutes >= 1)) { 
      System.err.println("minutes"); 
      return false; 
     } 
     return true;