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

后端 未结 27 1804
夕颜
夕颜 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条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-11-22 04:15

    Use the java.util.concurrent.TimeUnit class:

    String.format("%d min, %d sec", 
        TimeUnit.MILLISECONDS.toMinutes(millis),
        TimeUnit.MILLISECONDS.toSeconds(millis) - 
        TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))
    );
    

    Note: TimeUnit is part of the Java 1.5 specification, but toMinutes was added as of Java 1.6.

    To add a leading zero for values 0-9, just do:

    String.format("%02d min, %02d sec", 
        TimeUnit.MILLISECONDS.toMinutes(millis),
        TimeUnit.MILLISECONDS.toSeconds(millis) - 
        TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))
    );
    

    If TimeUnit or toMinutes are unsupported (such as on Android before API version 9), use the following equations:

    int seconds = (int) (milliseconds / 1000) % 60 ;
    int minutes = (int) ((milliseconds / (1000*60)) % 60);
    int hours   = (int) ((milliseconds / (1000*60*60)) % 24);
    //etc...
    

提交回复
热议问题