我有一个以毫秒为单位的值,我想将其转换为HH :: MM:SS.fff 这只是为了持续时间。
我知道有一种基本的方法:
String.format("%d min, %d sec",
TimeUnit.MILLISECONDS.toMinutes(millis),
TimeUnit.MILLISECONDS.toSeconds(millis) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))
);
但是有更好的方法吗? 感谢。
答案 0 :(得分:10)
这个数学可以解决问题:
int sec = (int)(millis/ 1000) % 60 ;
int min = (int)((millis/ (1000*60)) % 60);
int hr = (int)((millis/ (1000*60*60)) % 24);
如果你只需要分钟和秒,那么:
int sec = (int)(millis/ 1000) % 60 ;
int min = (int)((millis/ (1000) / 60);
答案 1 :(得分:1)
听起来你想要来自Joda Time的Duration
或Period
。例如:
import org.joda.time.*;
public class Test {
public static void main(String[] args) throws Exception {
long millis = 12345678L; // Just an example
PeriodType minutesEtc = PeriodType.time().withHoursRemoved();
Period period = new Period(millis, minutesEtc);
String text = String.format("%d min, %d sec",
period.getMinutes(),
period.getSeconds());
System.out.println(text);
}
}
(虽然你当然可以手工做算术,但我个人会尽量把它作为Period
保留。)