JodaTimeを使用してカウントダウンを実装しています。必要なのは秒の表示精度だけです。
ただし、時刻を印刷する場合、秒はフル秒として表示されるため、たとえば900msに達すると、「0」秒が印刷されますが、カウントダウンとしては「1」を表示する方が理にかなっています。次に、時間が実際に0msに達するまで。
例:
void printDuration(Duration d) {
System.out.println(
d.toPeriod(PeriodType.time()).toString(
new PeriodFormatterBuilder().printZeroAlways().appendSeconds().toFormatter()
)
);
}
printDuration(new Duration(5000)); // Prints "5" => OK
printDuration(new Duration(4900)); // Prints "4" => need "5"
printDuration(new Duration(1000)); // Prints "1" => OK
printDuration(new Duration(900)); // Prints "0" => need "1"
printDuration(new Duration(0)); // Prints "0" => OK
基本的に、表示される秒数はミリ秒から切り上げられ、切り捨てられないようにする必要があります。独自のフォーマッターを作成せずに、Jodaでこれを実現する方法はありますか?