我有一个时长为 127 秒的电影。我想将其显示为
02:07
。实现这一点的最佳方法是什么?
Duration yourDuration = //...
Period period = yourDuration.toPeriod();
PeriodFormatter minutesAndSeconds = new PeriodFormatterBuilder()
.printZeroAlways()
.appendMinutes()
.appendSeparator(":")
.appendSeconds()
.toFormatter();
String result = minutesAndSeconds.print(period);
我自己想要这个,但我发现 lyas 的答案不准确。 我想要一个计数器,当我有 0 小时 1 分钟时,我得到了
0:1
和他的答案 - 但这很容易用一行代码解决!
Period p = time.toPeriod();
PeriodFormatter hm = new PeriodFormatterBuilder()
.printZeroAlways()
.minimumPrintedDigits(2) // gives the '01'
.appendHours()
.appendSeparator(":")
.appendMinutes()
.toFormatter();
String result = hm.print(p);
这会给你
02:07
!
以下引用来自Joda-Time主页的通知:
使用现代日期时间 API请注意,从 Java SE 8 开始,要求用户迁移到
java.time
(JSR-310) - JDK 的核心部分,它将取代此项目。
java.time
的解决方案
演示:
import java.time.Duration;
public class Main {
public static void main(String[] args) {
Duration duration = Duration.ofSeconds(127);
// Default format
System.out.println(duration);
// Custom format
// ####################################Java-8####################################
String formattedElapsedTime = String.format("%02d:%02d", duration.toMinutes() % 60, duration.toSeconds() % 60);
System.out.println(formattedElapsedTime);
// ##############################################################################
// ####################################Java-9####################################
formattedElapsedTime = String.format("%02d:%02d", duration.toMinutesPart(),
duration.toSecondsPart());
System.out.println(formattedElapsedTime);
// ##############################################################################
}
}
输出:
PT2M7S
02:07
02:07
从