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

Time:11-09

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.

CodePudding user response:

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-

CodePudding user response:

java.time.Duration

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

Duration d = Duration.parse( "PT5M2S" );
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#…Part methods.

  • Related