本地时间,直到那时格式



想知道如何使用两个不同的长值格式化本地时间的输出: 我在这里的目标是用 till 部分格式化长分钟和长秒

所需输出示例: 9:02 如 9 分 2 秒

public static String getTimeUntilSomething() {
LocalTime currentTime = LocalTime.now();

long minutes = currentTime.until(currentTimeMore, ChronoUnit.MINUTES);
long seconds = currentTime.until(currentTimeMore, ChronoUnit.SECONDS);
String L = currentTime.format(DateTimeFormatter.ofPattern("m:ss"));
return L;
}

我建议你使用java.time.Duration来做到这一点,它以ISO-8601标准为模型,并在Java-8中作为JSR-310实现的一部分引入。在Java-9中引入了一些更方便的方法。

演示:

import java.time.Duration;
import java.time.LocalTime;
class Main {
public static void main(String[] args) {
// Test
System.out.println(getTimeUntilSomething(LocalTime.of(21, 10, 20)));
}
public static String getTimeUntilSomething(LocalTime currentTimeMore) {
LocalTime currentTime = LocalTime.now();
Duration duration = Duration.between(currentTime, currentTimeMore);
// ####################################Java-8####################################
return String.format("%2d:%02d", duration.toMinutes(), duration.toSeconds() % 60);
// ##############################################################################
// ####################################Java-9####################################
// return String.format("%d:%02d", duration.toMinutes(), duration.toSecondsPart());
// ####################################Java-9####################################
}
}

运行示例:

94:40

鉴于您在评论中所说的内容,我认为您可以使用String.format(),如下所示:

public static String getTimeUntilSomething() {
LocalTime currentTime = LocalTime.now();

long minutes = currentTime.until(currentTimeMore, ChronoUnit.MINUTES);
long seconds = currentTime.until(currentTimeMore, ChronoUnit.SECONDS);
String L = String.format("%d:%02d", minutes % 60, seconds % 60);
return L;
}

最新更新