0
使用TimeUnit
我想轉換Hours
和Minutes
到Milliseconds
與下面的代碼:轉換小時和分鐘成毫秒,並返回到HH:mm:ss格式
int hours = 01, minutes = 0;
long milliseconds = TimeUnit.SECONDS.toMillis(TimeUnit.HOURS.toSeconds(hours) + TimeUnit.MINUTES.toSeconds(minutes));
正常工作與3600000
毫秒
並用SimpleDateFormat
返回HH:mm:ss
格式:
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
Date date = new Date(milliseconds);
String returnFormat = formatter.format(date); //Final Result.
,這給我的結果是09:59:59
這不是預期的輸出。
我很困惑,上面的代碼有什麼問題?我期待輸出01:00:00
。
UPDATE:
其實我使用上面的代碼創建一個使用Handler post.delayed
功能簡單的倒數計時器。
...
@Override
public void run() {
milliseconds -= 1000; //Remove 1 Seconds
handler.postDelayed(this,1000); //Delay in 1 Seconds
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); //Create Time Formatting
Date date = new Date(milliseconds); //Put the milliseconds into Format
String returnFormat = formatter.format(date));
Log.w("COUNTDOWN", returnFormat);
}
我期待着那個。 '3600000'是一個持續時間(1小時以毫秒計),它不是自Unix時代開始以來的毫秒數。這是'new Date()'期望的。也有一些很好的時間分區可能涉及。 –
如果你已經有小時和分鐘的值,爲什麼不自己格式化呢?類似於String.format(「%02d:%02d」,小時,分鐘)''。還要注意'hours = 01,'是八進制符號,也就是說你不能寫'08'等。 – Thomas