说我有110秒要转换为01:50
或00:01:50
等。我如何在joda-time中这样做?我将数字加载到秒中,但是toString没有为我做转换。
答案 0 :(得分:9)
LocalTime time = new LocalTime(0, 0); // midnight
time = time.plusSeconds(110);
String output = DateTimeFormat.forPattern("HH:mm:ss").print(time);
System.out.println(output); // 00:01:50
请注意,此答案适用于小于一整天(86400)的秒数。如果您有更大的数字,那么最好使用格式化程序作为持续时间(在Joda-Time中称为PeriodFormatter
) - 另请参阅@Isaksson的正确答案。
答案 1 :(得分:6)
您可以为您的格式构建格式化程序并使用它。要以秒为单位将时间标准化为分钟/秒,请使用normalizedStandard()
;
PeriodFormatter myFormat =
new PeriodFormatterBuilder()
.printZeroAlways().minimumPrintedDigits(2).appendMinutes()
.appendSeparator(":")
.printZeroAlways().minimumPrintedDigits(2).appendSeconds()
.toFormatter();
Period period = Period.seconds(110).normalizedStandard();
System.out.println(myFormat.print(period));
> 01:50
答案 2 :(得分:0)
public static void main(String[] args) {
Date dt = new Date();
String date = String.format("%tH:%tM", dt, dt);
System.out.println(date);
// or System.out.printf("%tH:%tM", dt, dt);
}