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枚举将其转换为其他时间单位。转换为天数只需要一个电话。

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 回答