我正在尝试从JodaTime的持续时间类中获取格式化字符串。
Duration duration = new Duration(durationInSecond * 1000);
PeriodFormatter formatter = new PeriodFormatterBuilder()
.appendDays()
.appendSuffix(" days, ")
.appendHours()
.appendSuffix(" hours, ")
.appendMinutes()
.appendSuffix(" minutes and ")
.appendSeconds()
.appendSuffix(" seconds")
.toFormatter();
String formattedString = formatter.print(duration.toPeriod());
formattedString
的值应为
65天,3小时,5分20秒
但它是
1563小时,5分20秒
1563小时是65天3小时,但是格式化程序没有以这种方式打印。
我在这里缺少什么?
答案 0 :(得分:2)
我发现使用PeriodFormat.getDefault()
有助于创建PeriodFormatter,而无需使用PeriodFormatterBuilder完成所有额外的工作并创建自己的。它给出了相同的结果。
答案 1 :(得分:1)
您可以使用PeriodType
和Period.normalizedStandard(org.joda.time.PeriodType)来指定您感兴趣的字段。
在您的情况下PeriodType.dayTime()
似乎合适。
Duration duration = new Duration(durationInSecond * 1000);
PeriodFormatter formatter = new PeriodFormatterBuilder()
.appendDays()
.appendSuffix(" days, ")
.appendHours()
.appendSuffix(" hours, ")
.appendMinutes()
.appendSuffix(" minutes, ")
.appendSeconds()
.appendSuffix(" seconds")
.toFormatter();
Period period = duration.toPeriod();
Period dayTimePeriod = period.normalizedStandard(PeriodType.dayTime());
String formattedString = formatter.print(dayTimePeriod);
System.out.println(formattedString);