5

HH :: MM:SS.fffに変換したいミリ秒単位の値があります。これは、期間の目的のためだけです。

これを行う基本的な方法があることを私は知っています:

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

しかし、これを行うためのより良い方法はありますか?ありがとう。

4

2 に答える 2

10

この数学はトリックを行います:

int sec  = (int)(millis/ 1000) % 60 ;
int min  = (int)((millis/ (1000*60)) % 60);
int hr   = (int)((millis/ (1000*60*60)) % 24);

分と秒だけが必要な場合は、次に:

int sec  = (int)(millis/ 1000) % 60 ;
int min  = (int)((millis/ (1000) / 60);
于 2013-03-15T10:55:00.273 に答える
1

Durationどちらか、またはJodaTimePeriodから欲しいようです。例えば:

import org.joda.time.*;

public class Test {
    public static void main(String[] args) throws Exception {
        long millis = 12345678L; // Just an example
        PeriodType minutesEtc = PeriodType.time().withHoursRemoved();
        Period period = new Period(millis, minutesEtc);
        String text = String.format("%d min, %d sec",
                                    period.getMinutes(),
                                    period.getSeconds());
        System.out.println(text);
    }
}

Period(確かに手作業で算術演算を行うことはできますが、私は個人的に可能な限りそれを維持しようとします。)

于 2013-03-15T10:59:21.980 に答える