問題:
使用倒數計時器的開發人員遇到的問題難以將毫秒轉換為所需的「hh:mm:ss」格式。他們最初的嘗試導致時間顯示不正確,特別是超過一小時的數值。
解決方案:
主要問題源於使用以下方法將小時轉換為毫秒時的邏輯缺陷分鐘而不是幾個小時。具體來說,程式碼使用了:
TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
而它應該是:
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
程式碼示範:
這是修改後的程式碼片段將毫秒正確格式化為「hh:mm:ss」:
String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis), TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)), TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
測試案例:
long millis = 3600000; String hms = ... // Replace with revised code from above System.out.println(hms); // Expected output: 01:00:00
此外,可以使用模數除法來最佳化程式碼而不是減法:
String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis), TimeUnit.MILLISECONDS.toMinutes(millis) % TimeUnit.HOURS.toMinutes(1), TimeUnit.MILLISECONDS.toSeconds(millis) % TimeUnit.MINUTES.toSeconds(1));
兩種變體都實現了正確的「hh:mm:ss」格式,並利用TimeUnit API 無縫處理轉換。
以上是如何在 Java 中將毫秒轉換為「hh:mm:ss」格式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!