Java 如何将jodatime持续时间转换为格式为hh:mm:ss的字符串?

Java 如何将jodatime持续时间转换为格式为hh:mm:ss的字符串?,java,android,time,jodatime,Java,Android,Time,Jodatime,我正在使用jodatime库。我想显示从现在到结束时间之间的倒计时,并将其显示给用户。我通过以下方式获得要显示的持续时间: Interval time = new Interval(DateTime.now(), end_time); Duration duration = time.toDuration(); 现在我想将持续时间转换为一个字符串,格式为hh:mm:ss。最简单的方法是什么?使用以下持续时间: 或者您使用: DateFormat df = new SimpleDateForma

我正在使用jodatime库。我想显示从现在到结束时间之间的倒计时,并将其显示给用户。我通过以下方式获得要显示的持续时间:

Interval time = new Interval(DateTime.now(), end_time);
Duration duration = time.toDuration();

现在我想将持续时间转换为一个字符串,格式为
hh:mm:ss
。最简单的方法是什么?

使用以下
持续时间:

或者您使用:

DateFormat df = new SimpleDateFormat("hh:mm:ss");
String formatted = df.format(new Date(duration.getMillis()));
或者另一个非常简短的解决方案:

String formatted = String.format("%1$tI:%1$tM:%1$tS", duration.getMillis());

@Christian虽然建议的库“Apache Lang Commons”包含实用工具
DurationFormatUtils
可以工作,但其他两个方案完全失败,原因有两个:a)时区相关=>在区域不是UTC时引入偏移故障,b)仅适用于小于一天的持续时间
String formatted = String.format("%1$tI:%1$tM:%1$tS", duration.getMillis());