如何確定計算機已啓動多長時間(以毫秒爲單位)?在Java中獲取系統正常運行時間
回答
我真的不能想到一個非操作系統依賴的方式來做到這一點。 一個選項將使用ManagementFactory.getRuntimeMXBean().getUptime();
這將返回您的JVM正常運行時間,所以不是你正在尋找的東西,而是朝着正確的方向邁出的一步。
你究竟想用數據來完成什麼?
in結果返回哪個數據類型?我正在尋找系統登錄時間在我的應用程序中使用,以提醒用戶系統在特定時間內未關機。如果有的話,請更新代碼。謝謝 – JavDev 2016-06-04 07:38:54
@JavDev長時間返回正常運行時間的毫秒數 – 2016-06-08 09:44:43
在Windows中,您可以執行net stats srv
命令,而在Unix中,可以執行uptime
命令。必須解析每個輸出以獲取正常運行時間。該方法通過檢測用戶的操作系統自動執行必要的命令。
請注意,這兩個操作都不會以毫秒爲單位返回正常運行時間。
public static long getSystemUptime() throws Exception {
long uptime = -1;
String os = System.getProperty("os.name").toLowerCase();
if (os.contains("win")) {
Process uptimeProc = Runtime.getRuntime().exec("net stats srv");
BufferedReader in = new BufferedReader(new InputStreamReader(uptimeProc.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
if (line.startsWith("Statistics since")) {
SimpleDateFormat format = new SimpleDateFormat("'Statistics since' MM/dd/yyyy hh:mm:ss a");
Date boottime = format.parse(line);
uptime = System.currentTimeMillis() - boottime.getTime();
break;
}
}
} else if (os.contains("mac") || os.contains("nix") || os.contains("nux") || os.contains("aix")) {
Process uptimeProc = Runtime.getRuntime().exec("uptime");
BufferedReader in = new BufferedReader(new InputStreamReader(uptimeProc.getInputStream()));
String line = in.readLine();
if (line != null) {
Pattern parse = Pattern.compile("((\\d+) days,)? (\\d+):(\\d+)");
Matcher matcher = parse.matcher(line);
if (matcher.find()) {
String _days = matcher.group(2);
String _hours = matcher.group(3);
String _minutes = matcher.group(4);
int days = _days != null ? Integer.parseInt(_days) : 0;
int hours = _hours != null ? Integer.parseInt(_hours) : 0;
int minutes = _minutes != null ? Integer.parseInt(_minutes) : 0;
uptime = (minutes * 60000) + (hours * 60000 * 60) + (days * 6000 * 60 * 24);
}
}
}
return uptime;
}
Windows系統可以通過查詢windows WMI
要運行下面的代碼獲得uptime
到毫秒級精確度,你需要下載Jawin庫並添加jawin.dll
到Eclipse項目的根
public static void main(String[] args) throws COMException {
String computerName = "";
String userName = "";
String password = "";
String namespace = "root/cimv2";
String queryProcessor = "SELECT * FROM Win32_OperatingSystem";
DispatchPtr dispatcher = null;
try {
ISWbemLocator locator = new ISWbemLocator(
"WbemScripting.SWbemLocator");
ISWbemServices wbemServices = locator.ConnectServer(computerName,
namespace, userName, password, "", "", 0, dispatcher);
ISWbemObjectSet wbemObjectSet = wbemServices.ExecQuery(
queryProcessor, "WQL", 0, null);
DispatchPtr[] results = new DispatchPtr[wbemObjectSet.getCount()];
IUnknown unknown = wbemObjectSet.get_NewEnum();
IEnumVariant enumVariant = (IEnumVariant) unknown
.queryInterface(IEnumVariant.class);
enumVariant.Next(wbemObjectSet.getCount(), results);
for (int i = 0; i < results.length; i++) {
ISWbemObject wbemObject = (ISWbemObject) results[i]
.queryInterface(ISWbemObject.class);
System.out.println("Uptime: "
+ wbemObject.get("LastBootUpTime"));
}
} catch (COMException e) {
e.printStackTrace();
}
- 1. 在iOS/Swift中獲取系統正常運行時間
- 2. 系統正常運行時間
- 3. PHP - 獲取時間獨立於它正在運行的系統
- 4. 如何在Windows 7中檢查系統正常運行時間
- 5. 更改Linux時間來欺騙系統正常運行時間
- 6. 最快的方式獲得系統正常運行時間在Python在Linux中
- 7. 獲取Windows正常運行時間
- 8. 獲得iOS系統正常運行時間,在睡眠時不會暫停
- 9. 如何在過去24小時內獲得系統正常運行時間
- 10. 如何在Java中獲得UNIX正常運行時間?
- 11. 系統正常運行時間和內存屏障
- 12. 通過VBA(訪問/ Excel)中獲取系統運行時間
- 13. 在VCS中獲取系統時間
- 14. 在Vxworks中獲取系統時間
- 15. 在iPhone中獲取系統時間
- 16. 我打電話來獲得系統正常運行時間的API?
- 17. 獲得程序正常運行時間
- 18. 從RTC獲得正常運行時間
- 19. 在Java中獲取系統最後一次啓動時間
- 20. 在Java中獲取系統啓動時間?
- 21. 正在運行的系統
- 22. 如何從系統中獲取時間?
- 23. 獲取系統時間在VB.NET
- 24. linux正常運行時間
- 25. 如何使用C#中的正則表達式從HTML中提取系統正常運行時間
- 26. 運行時錯誤:NullPointerException異常android系統中,雖然它正在Java的正常
- 27. 獲取線程java的運行時間
- 28. 使用ontap API和Java可以查詢哪些API以獲得系統正常運行時間?
- 29. 在android中獲取運行時異常
- 30. 我如何獲得Linux系統的正常運行?
這取決於操作系統,但你可能會想要掏出一個命令 – mre 2013-02-10 17:43:18
什麼操作系統?沒有外部第三方庫或JNI沒有辦法。 – 2013-02-10 17:43:58
或者看看http://www.mkyong.com/java/how-do-get-time-in-milliseconds-in-java/ – 2013-02-10 17:46:30