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
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.