我使用PeriodFormatter返回一个字符串,显示事件发生的时间.下面的代码不断创建字符串,如1146小时39分钟,而不是x天y小时z分钟.有任何想法吗?
谢谢,内森
PeriodFormatter formatter = new PeriodFormatterBuilder()
.printZeroNever()
.appendDays()
.appendSuffix( "d " )
.appendHours()
.appendSuffix( "h " )
.appendMinutes()
.appendSuffix( "m " )
.toFormatter();
return formatter.print( duration.toPeriod() );
Run Code Online (Sandbox Code Playgroud) 我以为我明白了,但显然我没有.你能帮我把这些单元测试通过吗?
@Test
public void second() {
assertEquals("00:00:01", OurDateTimeFormatter.format(1000));
}
@Test
public void minute() {
assertEquals("00:01:00", OurDateTimeFormatter.format(1000 * 60));
}
@Test
public void hour() {
assertEquals("01:00:00", OurDateTimeFormatter.format(1000 * 60 * 60));
}
@Test
public void almostMidnight() {
final int secondsInDay = 60 * 60 * 24;
assertEquals("23:59:59", OurDateTimeFormatter.format(1000 * (secondsInDay - 1)));
}
@Test
public void twoDaysAndAHalf() {
final int secondsInDay = 60 * 60 * 24;
assertEquals("12:00:00 and 2 days", OurDateTimeFormatter.format(1000 * secondsInDay * 5 / 2));
}
Run Code Online (Sandbox Code Playgroud)
实际代码在这里:
public …Run Code Online (Sandbox Code Playgroud) System.out.println( PeriodFormat.getDefault().print(Period.hours(1).plusMinutes(30).plusSeconds(60)));
Run Code Online (Sandbox Code Playgroud)
上面的Joda PeriodFormatter的输出是"1小时30分60秒".
我知道这是一个边缘情况,但有没有办法输出这个"1小时31分钟"?
谢谢!