Как мне «красиво» print »a Duration in Java?

Кто-нибудь знает библиотеку Java, которая может довольно просто печатать число в миллисекундах так же, как это делает C #?

Например, 123456 мс как длина быть напечатано как 4d1h3m5s.

77
задан james.garriss 9 August 2018 в 11:48
поделиться

2 ответа

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);
86
ответ дан 24 November 2019 в 10:49
поделиться

JodaTime имеет класс Period , который может представлять такие величины и может быть отображен (через IsoPeriodFormat ) в ISO8601 формат, например PT4D1H3M5S , например

Period period = new Period(millis);
String formatted = ISOPeriodFormat.standard().print(period);

Если этот формат не тот, который вам нужен, то PeriodFormatterBuilder позволяет собирать произвольные макеты, включая ваш стиль C # 4d1h3m5s .

10
ответ дан 24 November 2019 в 10:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: