Java中有没有办法获取当前用户登录的时间?
我知道,如果您在 Windows 终端中运行 quser
,它会列出当前用户的一些基本信息,包括 LOGON TIME
,精确到分钟。
是否有系统属性或我可以在 Java 中访问的东西,我可以从中获取用户的登录时间?
如果有跨平台的方法来获取 Windows、Mac OS、Android 等中当前用户的登录时间,那就加分了。
最佳答案
一个可能的解决方案是使用Runtime.getRuntime().exec()
,如下所示:
public static void main(String[] args) throws Exception {
Process p;
StringBuilder sb = new StringBuilder();
p = Runtime.getRuntime().exec("quser");
p.waitFor();
BufferedReader reader
= new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
System.out.println(sb);
}
能够成功获取我的登录信息:
run:
USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME
robotlos console 1 Active 1+18:08 3/17/2016 10:36 AM
BUILD SUCCESSFUL (total time: 0 seconds)
要确定正在使用的操作系统,您可以使用System.getProperty("os.name")
要隔离日期和时间,在我的例子中,因为它是 sb
的最后 3 个子字符串,您可以执行以下操作:
String[] vals = sb.toString().split(" ");
String loginTime = vals[vals.length - 3] + " " + vals[vals.length - 2] + " " + vals[vals.length - 1];
虽然这不是最漂亮的解决方案,
System.out.println(loginTime);
将打印出:
3/17/2016 10:36 AM
关于java - 在Java中获取Windows用户的登录时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36338895/