How can I “pretty print” a Duration in Java?

前端 未结 11 897
盖世英雄少女心
盖世英雄少女心 2020-11-28 07:45

Does anyone know of a Java library that can pretty print a number in milliseconds in the same way that C# does?

E.g., 123456 ms as a long would be printed as 4d1h3m5

11条回答
  •  一向
    一向 (楼主)
    2020-11-28 08:30

    I've built a simple solution, using Java 8's Duration.toString() and a bit of regex:

    public static String humanReadableFormat(Duration duration) {
        return duration.toString()
                .substring(2)
                .replaceAll("(\\d[HMS])(?!$)", "$1 ")
                .toLowerCase();
    }
    

    The result will look like:

    - 5h
    - 7h 15m
    - 6h 50m 15s
    - 2h 5s
    - 0.1s
    

    If you don't want spaces between, just remove replaceAll.

提交回复
热议问题