15

JVMの開始時間と稼働時間を取得したい。これまで私はこれを行いました:

public long getjvmstarttime(){
    final long uptime = ManagementFactory.getRuntimeMXBean().getStartTime();
    return uptime;
}

public long getjvmuptime(){
    final long uptime = ManagementFactory.getRuntimeMXBean().getUptime();
    return uptime;
}

しかし、私はミリ秒単位で時間を取得します。時間を日と時間に変換する方法。ミリ秒を次の形式で表示したい:3日、8時間、32分。ミリ秒を変換できる内部Javaメソッドはありますか?

4

4 に答える 4

59

ミリ秒単位の時間を取得したら、TimeUnit列挙型を使用して他の時間単位に変換できます。日数に変換するには、1回の呼び出しが必要です。

long days = TimeUnit.MILLISECONDS.toDays(milliseconds);

時間の取得には、合計時間に対する別の同様の呼び出しが含まれ、日数が差し引かれた後の残り時間を計算します。

于 2012-08-25T20:19:55.013 に答える
40

以下のコードは、必要な計算を実行し、結果の文字列を作成します。

private static final int SECOND = 1000;
private static final int MINUTE = 60 * SECOND;
private static final int HOUR = 60 * MINUTE;
private static final int DAY = 24 * HOUR;

// TODO: this is the value in ms
long ms = 10304004543l;
StringBuffer text = new StringBuffer("");
if (ms > DAY) {
  text.append(ms / DAY).append(" days ");
  ms %= DAY;
}
if (ms > HOUR) {
  text.append(ms / HOUR).append(" hours ");
  ms %= HOUR;
}
if (ms > MINUTE) {
  text.append(ms / MINUTE).append(" minutes ");
  ms %= MINUTE;
}
if (ms > SECOND) {
  text.append(ms / SECOND).append(" seconds ");
  ms %= SECOND;
}
text.append(ms + " ms");
System.out.println(text.toString());
于 2012-08-25T20:25:55.303 に答える
2

プリティタイムをご覧ください。これは、ミリ秒などのタイムスタンプから人間が再利用可能な時間文字列を生成するためのライブラリです。

于 2012-08-25T20:20:34.197 に答える
1

以下のコードはきれいに仕事をします

package com.company;

import java.util.Scanner;
import java.util.concurrent.TimeUnit;

public class Main {

    public static void main(String[] args) {
        final long milliseconds;
        Scanner in = new Scanner(System.in);

        System.out.println("Enter time in milliseconds: ");
        milliseconds = in.nextLong();

        final long seconds = TimeUnit.MILLISECONDS.toSeconds(milliseconds);

        final long minute = TimeUnit.MILLISECONDS.toMinutes(milliseconds);

        final long hours = TimeUnit.MILLISECONDS.toHours(milliseconds);

        final long days = TimeUnit.MILLISECONDS.toDays(milliseconds);

        if(milliseconds < 1000){
            System.out.println(days +"d:" +hours+"h:" +minute+"m:" +seconds +"s:" +milliseconds +"ms");
        }
        else{
            System.out.println(days +"d:" +hours % 24 +"h:" +minute % 60 +"m:" +seconds % 60 +"s");
        }
    }
}

サンプル出力

ミリ秒単位で時間を入力してください:12000000

0d:3h:20m:0s

于 2021-04-29T11:43:56.117 に答える