【问题标题】:How do i format a java.time.Duration mm:ss我如何格式化 java.time.Duration mm:ss
【发布时间】:2015-02-23 13:40:02
【问题描述】:

我有一个 java.time.Duration,我想以 mm:ss 的形式输出它。似乎无法使用 DateTimeFormatter,因为它只接受 LocalTime、ZonedTIme 等

所以我这样做了,工作正常 90 秒给 1:30,但 66 秒给 1:6 而我想要 1:06

Duration duration = Duration.ofSeconds(track.getLength().longValue());
System.out.println(duration.toMinutes() + ":" + duration.minusMinutes(duration.toMinutes()).getSeconds());

【问题讨论】:

    标签: java java-8 java-time


    【解决方案1】:

    您可以创建一个 LocalTime 代表从午夜 (00:00) 开始的持续时间并使用 DateTimeFormatter

    LocalTime t = LocalTime.MIDNIGHT.plus(duration);
    String s = DateTimeFormatter.ofPattern("m:ss").format(t);
    

    请注意,这只适用于不到一小时的持续时间。

    【讨论】:

    • 如果超过 24 小时,则此解决方案将失败。
    • @MenoHochschild 实际上超过了 59:59 分钟。同意。
    【解决方案2】:

    这样试试

    System.out.printf("%d:%02d%n", duration.toMinutes(), duration.minusMinutes(duration.toMinutes()).getSeconds());
    

        String s = String.format("%d:%02d%n", duration.toMinutes(), duration.minusMinutes(duration.toMinutes()).getSeconds());
    

    格式化为字符串

    【讨论】:

    • 谢谢,但是输出实际上需要进入一个html文件而不是仅仅输出到System.out,DateTIme没有提供解决方案。
    • 谢谢,这行得通,但我已经在日期时间生态圈内寻求解决方案
    • 对我来说是一个更清洁的解决方案。 “日期时间”生态圈不处理持续时间的格式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 2013-05-05
    • 1970-01-01
    相关资源
    最近更新 更多