Marcel Caferati
Marcel Caferati

Reputation: 174

Transforming long milliseconds into 00:00:00.000 format string

Converting a long millisecond value in to the format 00:00:00.000. I can't have hours wrapping around. So I cant' use DateFormat.

long millis = 3600000;
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));
//Output: 01:00:00

This code excludes milliseconds.

Upvotes: 0

Views: 1421

Answers (1)

user4668606
user4668606

Reputation:

You can try this code:

long millis = 3600000;
String hms = String.format("%02d:%02d:%02d.%03d",  TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis) % TimeUnit.HOURS.toMinutes(1),
TimeUnit.MILLISECONDS.toSeconds(millis) % TimeUnit.MINUTES.toSeconds(1),
    millis % 1000);

It extends the format-string by ".%03d" and adds the milliseconds (millis % 1000) to the parameter-list. Tested on java v1.8.0_91 (Oracle JRE).

Upvotes: 1

Related Questions