2012-04-29 20 views
2

我使用currentTimeMillis();獲取開始時間,然後再次使用它來獲得結束時間。然後,我使用刪除從結束開始,並獲得一個值,這是兩者之間的持續時間。我使用SimpleDateFormat來使所有這些值漂亮和可讀。唯一的是當我使用一個像10秒(或300等)的低值而不是全長的長號碼(例如1335718053126),我似乎會在01:00:10或01:02:12等我的輸出?事實上,如果我只是要求SimpleDateFormat輸出hh:mm:ss值爲0值,它將讀取01:00:00。Android:SimpleDateFormat不斷添加1小時到我的時間

任何人都知道這是爲什麼?

如果其他人需要時間格式化的解決方案,找到這個整潔的小代碼。 Source link

public String getNiceTime(long time) {  

    String format = String.format("%%0%dd", 2); 
    String seconds = String.format(format, time % 60); 
    String minutes = String.format(format, (time % 3600)/60); 
    String hours = String.format(format, time/3600); 
    String outPutTime = hours + ":" + minutes + ":" + seconds; 
    return outPutTime; 
} 
+1

您使用日期,而不是時間格式。可能與夏季時間有關嗎? – Heinrisch

+0

我認爲你是對的,你知道我可以如何改變這個時區嗎?或者我可以使用簡單的時間格式嗎? – Purplemonkey

+0

我不知道輸出正確時間的好方法,您可能需要自己計算小時:分鐘:秒。 – Heinrisch

回答

2
mySimpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); 

說明:你可能生活在一個GMT + 1時區,除非您指定一個不同的,格式化程序會選擇你目前的一個,所以它認爲0小時爲GMT和您在格林威治標準時間+1,它輸出1小時