Alan 34e9
Alan 34e9

Reputation: 31

What's the easiest way to convert milliseconds to readable String in Java Spring

How to convert during(milliseconds) from long to readable String in Java, such as 5 minutes and 2 seconds or 2 hours if no trailing minutes or seconds?

I have tried TimeUtils, but it still requires a little script to concatenate strings.

Upvotes: 1

Views: 688

Answers (2)

Basil Bourque
Basil Bourque

Reputation: 339837

java.time.Duration

Use Duration to represent a span of time not attached to the timeline, on a scale of hours-minutes-seconds.

Duration d = Duration.parse( "PT5M2S" );

Parse your count of milliseconds as a Duration.

Duration d = Duration.ofMillis( myMillis ) ;

You can manipulate the standard ISO 8601 output from the Duration#toString.

String output =
        d
                .toString()
                .replace( "PT" , "" )
                .replace( "H" , " hours " )
                .replace( "M" , " minutes " )
                .replace( "S" , " seconds " )
                .stripTrailing();

output = 5 minutes 2 seconds

If you want to get more fancy, such as using singular for a value of one, use the Duration#to…Part methods.

Upvotes: 2

Alan 34e9
Alan 34e9

Reputation: 31

Use DurationFormatUtils.formatDurationWords instead:

import org.apache.commons.lang3.time.DurationFormatUtils;

...
DurationFormatUtils.formatDurationWords(milliseconds, true, true);
...

The result will be: X days Y hours Z minutes without leading or trailing zero elements

Detail: https://commons.apache.org/proper/commons-lang/javadocs/api-release/org/apache/commons/lang3/time/DurationFormatUtils.html#formatDurationWords-long-boolean-boolean-

Upvotes: 2

Related Questions