在Joda时间,我需要找出两个时期之间的区别:
.a
结果为 PeriodFormatter formatter = new PeriodFormatterBuilder()
.printZeroAlways().minimumPrintedDigits(2)
.appendHours().appendSuffix(":").appendMinutes().appendSuffix(":").appendSeconds()
.toFormatter();
Period period1 = formatter.parsePeriod("11:20:50");
Period period2 = formatter.parsePeriod("13:40:00");
Period difference1 = period1.minus(period2).normalizedStandard();
System.out.println(formatter.print(difference1)); //shows -02:-19:-10
,但我希望显示为-02:-19:-10
。在JodaTime中我可以做任何格式化来实现吗?
答案 0 :(得分:1)
我不认为您可以配置PeriodFormatter来自行完成此操作。 但是您可以检查标准化周期是否为负长度。如果是这样,你自己添加减号,并附加否定期间的格式化版本(所以在这种情况下,否定期间会使其成为正数)
PeriodFormatter formatter = new PeriodFormatterBuilder()
.printZeroAlways().minimumPrintedDigits(2)
.appendHours().appendSuffix(":").appendMinutes().appendSuffix(":").appendSeconds()
.toFormatter();
Period period1 = formatter.parsePeriod("11:20:50");
Period period2 = formatter.parsePeriod("13:40:00");
Period difference1 = period1.minus(period2).normalizedStandard();
String formatted;
if (difference1.toStandardSeconds().get(DurationFieldType.seconds()) < 0) {
formatted = "-" + formatter.print(difference1.negated());
} else {
formatted = formatter.print(difference1);
}
System.out.println(formatted);