2015-07-12 31 views
1

我收到了未來的時間戳(UTC)。現在我想從現在開始以「2h 15min」等人類可讀格式顯示剩餘時間。但我不確定DateUtils的哪種方法是最好的方法。有什麼建議麼?我在想:Android:以人類可讀格式顯示剩餘時間

DateUtils.getRelativeDateTimeString

這是一個示例代碼:

  int gmtOffset = TimeZone.getDefault().getRawOffset(); 
      long utcTimestamp = item.getExpirationDate(); 
      long localTimestamp = utcTimestamp + gmtOffset; 

      Calendar c = Calendar.getInstance(); 
      long localNow = c.getTimeInMillis(); 

      // ToDo: show timespan of (localTimestamp - localNow) in human readable format e.g. 2h 5min left 

解決方案:這就是我按照你的想法解決了這個問題。謝謝!

final CharSequence timespan = DateUtils.getRelativeTimeSpanString(
      localTimestamp, 
      localNow, 
      DateUtils.MINUTE_IN_MILLIS, 
      DateUtils.FORMAT_ABBREV_RELATIVE); 

回答

2

嘗試如下代碼: -

long gmtOffset = TimeZone.getDefault().getRawOffset(); 
    long utcTimestamp = item.getExpirationDate(); 

    DateUtils.getRelativeTimeSpanString(utcTimestamp, gmtOffset, DateUtils.DAY_IN_MILLIS); 
+0

我正在使用稍微不同的功能和參數。但這個想法是正確的。因此,我接受你的答案,並將上面發佈我的解決方案。 – Matthias

2

你需要通過SimpleDateFormat的方法來做。請檢查示例。

Calendar cal = Calendar.getInstance(); 
DateFormat outputFormat = new SimpleDateFormat("hh:mm:ss a"); 
String formattedTime = outputFormat.format(cal.getTime()); 
+0

但這將有一個02:15的輸出,而不是2小時15分鐘。對? – Matthias

+0

SimpleDateFormat(「hhhh:mmmm a」);請搜索,如何使用SimpleDateFormat來顯示這種類型的輸出。我想,你找到了。 –

2

要做到這一點,最簡單,最簡單的方法是使用這個,

int seconds = (int) (milliseconds/1000) % 60 ; 
int minutes = (int) ((milliseconds/(1000*60)) % 60); 
int hours = (int) ((milliseconds/(1000*60*60)) % 24); 

這是你如何能得到 「小時」,您的「分鐘」或「秒」localTimestamp - localNow

只需使用,

System.out.println(hours + " hours " + minutes + " min"); 

這將按照您想要的方式顯示時間。希望能幫助到你。

+0

這是否解決了您的問題? –

+0

這是一個短暫的解決方案,因爲它不關心語言環境和語言。小時和分鐘在英語,德語,俄語等方面的命名是不同的。 – Matthias