Кто-нибудь знает библиотеку Java, которая может довольно просто печатать число в миллисекундах так же, как это делает C #?
Например, 123456 мс как длина быть напечатано как 4d1h3m5s.
Joda Time имеет довольно хороший способ сделать это, используя PeriodFormatterBuilder .
Быстрая победа: PeriodFormat.getDefault (). Print (duration.toPeriod ());
например.
//import org.joda.time.format.PeriodFormatter;
//import org.joda.time.format.PeriodFormatterBuilder;
//import org.joda.time.Duration;
Duration duration = new Duration(123456); // in milliseconds
PeriodFormatter formatter = new PeriodFormatterBuilder()
.appendDays()
.appendSuffix("d")
.appendHours()
.appendSuffix("h")
.appendMinutes()
.appendSuffix("m")
.appendSeconds()
.appendSuffix("s")
.toFormatter();
String formatted = formatter.print(duration.toPeriod());
System.out.println(formatted);
JodaTime имеет класс Period
, который может представлять такие величины и может быть отображен (через IsoPeriodFormat
) в ISO8601 формат, например PT4D1H3M5S
, например
Period period = new Period(millis);
String formatted = ISOPeriodFormat.standard().print(period);
Если этот формат не тот, который вам нужен, то PeriodFormatterBuilder
позволяет собирать произвольные макеты, включая ваш стиль C # 4d1h3m5s
.