【问题标题】:How to convert Duration to seconds? [duplicate]如何将持续时间转换为秒? [复制]
【发布时间】:2020-05-03 05:31:05
【问题描述】:
    LocalDateTime start = LocalDateTime.of(2018, 9, 2, 14, 17, 25, 135);
    LocalDateTime end = LocalDateTime.of(2018, 9, 2, 14, 19, 59, 965);
    Duration duration = Duration.between(start, end);

我需要得到这种格式的结果:2:34.830

分钟和纳秒 - 没问题:

    System.out.println(duration.toMinutes());
    System.out.println(duration.toNanos());

但是我怎样才能从这个例子中获得秒 - 34 秒?

【问题讨论】:

标签: java


【解决方案1】:

您正在寻找的是以下内容:

System.out.println(duration.getSeconds()%60);

或者,

System.out.println(duration.getSeconds() - duration.toMinutes()*60);

从 Java 9 开始,toSecondsPart() 有一个专用方法:

System.out.println(duration.toSecondsPart());

【讨论】:

    【解决方案2】:

    通过一些数学运算,您可以得到预期的结果。

            long minutes = duration.toMinutes();
            long seconds = duration.getSeconds() % 60;
            long nanoSeconds = duration.toNanos() % 1000_000_000L;
            System.out.println(String.format("%d:%d.%d", minutes, seconds, nanoSeconds));
    

    输出:

    2:34.830
    

    编辑: 在@M 之后。 Prokhorov 的评论,同样延长了几个小时:

        long hours = duration.toHours();
        long minutes = duration.toMinutes() % 60;
    

    并将其格式化为:

    System.out.println(String.format("%d:%d:%d.%d", hours, minutes, seconds, nanoSeconds));
    

    输出:

    0:2:34.830
    

    【讨论】:

    • if OP 没问题,此打印输出的持续时间为数百分钟。
    • true,假设从示例中他的兴趣在于精确度。
    猜你喜欢
    • 1970-01-01
    • 2016-11-05
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多