2

MediaPlayerのMinute:Second:Millisecondを返すようにこの文字列を取得しようとしています。このコードを見つけましたが、ミリ秒を機能させて小数点以下2桁に配置する方法がわかりません。私はそれが適切な人に簡単だと確信しています!

private String getTimeString(long millis) {
        StringBuffer buf = new StringBuffer();

        int hours = (int) (millis / (1000*60*60));
        int minutes = (int) (( millis % (1000*60*60) ) / (1000*60));
        int seconds = (int) (( ( millis % (1000*60*60) ) % (1000*60) ) / 1000);


        buf
            .append(String.format("%02d", hours))
            .append(":")
            .append(String.format("%02d", minutes))
            .append(":")
            .append(String.format("%02d", seconds));


        return buf.toString();
    }

いつもみんなありがとう

4

3 に答える 3

7

1秒間に1000ミリ秒があります。つまり、ミリ秒には小数点以下3桁が必要です。

/** return time in format 1:23.456 */
private String getTimeString(long millis) {
    int minutes = (int) (millis / (1000 * 60));
    int seconds = (int) ((millis / 1000) % 60);
    int milliseconds = (int) (millis % 1000);
    String.format("%d:%02d.%03d", minutes, seconds, milliseconds);
}

ミリ秒に2桁が絶対に必要な場合は、実際にはミリ秒ではなく1/100秒になります。

/** return time in format 1:23.45 */
private String getTimeString(long millis) {
    int minutes = (int) (millis / (1000 * 60));
    int seconds = (int) ((millis / 1000) % 60);
    int seconds100 = (int) ((millis / 10) % 100);
    String.format("%d:%02d.%02d", minutes, seconds, seconds100);
}

ただし、メディアプレーヤーの一般的な表示形式は、1桁を10分の1秒使用することです。

/** return time in format 1:23.4 */
private String getTimeString(long millis) {
    int minutes = (int) (millis / (1000 * 60));
    int seconds = (int) ((millis / 1000) % 60);
    int seconds10 = (int) ((millis / 100) % 10);
    String.format("%d:%02d.%d", minutes, seconds, seconds10);
}
于 2011-08-13T10:13:26.987 に答える
1

ミリ秒を小数点以下2桁に配置する場合は、10ミリ秒の増分しか表示できないことに注意してください。1ms = 0.001s、小数点以下3桁。しかし、それにもかかわらず、あなたが探しているコードは次のとおりです。

int rem_milliseconds = (int)(millis % 1000); // Remaining ms after last second
...
.append(String.format("%02d", rem_milliseconds));

小数点以下2桁のままにしました。

于 2011-08-13T06:53:16.850 に答える
1

これを試して:

private String getTimeString(long millis) {
    long minutes = TimeUnit.MILLISECONDS.toMinutes(millis);
    long seconds = TimeUnit.MILLISECONDS.toSeconds(millis) -
                   TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis));
    millis -= TimeUnit.MINUTES.toMillis(minutes) + TimeUnit.SECONDS.toMillis(seconds);

    return String.format("%d:%d:%d", minutes, seconds, millis);
}
于 2011-08-13T06:56:30.287 に答える