Java JodaTime期间:打印第一个非零元素
这个问题困扰了我一段时间。我需要计算两个不同日期时间之间的时间,然后只显示该时间段的最大时间单位。例如,如果两个对象之间的时间是4h 55m 40s,我只想打印4h。我可以编写一个方法来迭代Period类的getValues()方法,但是数组迭代既昂贵又缓慢。有没有现成的方法可以做到这一点,这样我就不会重新发明轮子了?谢谢 编辑:以下是我的periodformatterbuilder方法:Java JodaTime期间:打印第一个非零元素,java,android,jodatime,Java,Android,Jodatime,这个问题困扰了我一段时间。我需要计算两个不同日期时间之间的时间,然后只显示该时间段的最大时间单位。例如,如果两个对象之间的时间是4h 55m 40s,我只想打印4h。我可以编写一个方法来迭代Period类的getValues()方法,但是数组迭代既昂贵又缓慢。有没有现成的方法可以做到这一点,这样我就不会重新发明轮子了?谢谢 编辑:以下是我的periodformatterbuilder方法: private PeriodFormatter createFormatter() { Perio
private PeriodFormatter createFormatter() {
PeriodFormatter formatter = new PeriodFormatterBuilder()
.printZeroNever()
.appendDays()
.appendSuffix("d")
.appendSeparator(" , ")
.appendHours()
.appendSuffix("h")
.appendSeparator(" , ")
.appendMinutes()
.appendSuffix("m")
.appendSeparator(" , ")
.appendSeconds()
.appendSuffix("s")
.toFormatter();
return formatter;
}
如果天数不是0,我似乎不知道如何让它在几个小时内不打印任何内容 我认为您需要PeriodFormatterBuilder,特别是
printZero*
方法。我会使用哪一种?所有3个在API中都有相同的描述,方法本身的名称解释不了多少。您的格式化程序似乎适合我,打印天数,但如果打印天数,则不会打印小时!=抱歉,我本该好好解释一下。我想要它做的是如果(天!=0),只打印天。如果(小时数!=0),则仅打印小时数。因此,仅打印最大的持续时间。使用格式化程序是否可以实现这一点?