如何将毫秒转换为小时和天?

我想获得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方法?

下面的代码执行您需要的数学运算并构建结果字符串:

 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()); 

一旦你有时间(以毫秒为单位),你可以使用TimeUnit枚举将其转换为其他时间单位。 转换为天只需要一个电话。

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

获得时间将涉及另外类似的总小时呼叫,然后计算在减去天数后的数小时左侧。

看看Pretty Time 。 它是一个用于从时间戳(如毫秒)生成人类可重用时间字符串的库。