How to convert Milliseconds to “X mins, x seconds” in Java?

后端 未结 27 2245
夕颜
夕颜 2020-11-22 03:59

I want to record the time using System.currentTimeMillis() when a user begins something in my program. When he finishes, I will subtract the current Syste

27条回答
  •  庸人自扰
    2020-11-22 04:29

    Shortest solution:

    Here's probably the shortest which also deals with time zones.

    System.out.printf("%tT", millis-TimeZone.getDefault().getRawOffset());
    

    Which outputs for example:

    00:18:32
    

    Explanation:

    %tT is the time formatted for the 24-hour clock as %tH:%tM:%tS.

    %tT also accepts longs as input, so no need to create a Date. printf() will simply print the time specified in milliseconds, but in the current time zone therefore we have to subtract the raw offset of the current time zone so that 0 milliseconds will be 0 hours and not the time offset value of the current time zone.

    Note #1: If you need the result as a String, you can get it like this:

    String t = String.format("%tT", millis-TimeZone.getDefault().getRawOffset());
    

    Note #2: This only gives correct result if millis is less than a day because the day part is not included in the output.

提交回复
热议问题