Java JodaTime Period格式

时间:2016-01-06 03:02:11

标签: java jodatime

在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中我可以做任何格式化来实现吗?

1 个答案:

答案 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);