首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何通过java程序获取系统登录时间

通过Java程序获取系统登录时间可以使用Java的System类和Runtime类来实现。具体步骤如下:

  1. 使用System类的静态方法currentTimeMillis()获取当前系统时间的毫秒数。
  2. 使用Runtime类的exec()方法执行系统命令who -b,该命令可以获取系统的登录时间。
  3. 通过Runtime类的getInputStream()方法获取命令执行结果的输入流。
  4. 使用Java的IO流读取输入流中的内容,并解析出系统登录时间。
  5. 将解析出的系统登录时间进行格式化或转换为需要的日期时间格式。

以下是一个示例代码:

代码语言:java
复制
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class SystemLoginTime {
    public static void main(String[] args) {
        // 获取当前系统时间的毫秒数
        long currentTimeMillis = System.currentTimeMillis();

        // 执行系统命令获取系统登录时间
        String loginTime = getSystemLoginTime();

        // 输出系统登录时间
        System.out.println("系统登录时间:" + loginTime);

        // 计算系统登录时长
        long loginDuration = currentTimeMillis - Long.parseLong(loginTime);
        System.out.println("系统登录时长:" + loginDuration + "毫秒");
    }

    private static String getSystemLoginTime() {
        String loginTime = null;
        try {
            // 执行系统命令获取命令输出结果
            Process process = Runtime.getRuntime().exec("who -b");
            InputStream inputStream = process.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

            // 读取命令输出结果
            String line;
            while ((line = reader.readLine()) != null) {
                // 解析出系统登录时间
                if (line.contains("system boot")) {
                    String[] parts = line.split(" ");
                    loginTime = parts[parts.length - 2];
                    break;
                }
            }

            // 关闭流
            reader.close();
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return loginTime;
    }
}

该示例代码通过执行系统命令who -b获取系统登录时间,并输出登录时间和登录时长。请注意,该代码仅适用于Linux系统,对于其他操作系统可能需要使用不同的命令或方法来获取系统登录时间。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

java如何获取当前系统时间

java.util包中提供的和日期时间相关的类有Date类、Calendar类和SimpleDateFormat类等。...,该类提供了一系列操作日期和时间各组成部分的方法,Date类中使用最多的是获取系统当前的日期和时间, 如Date date=new Date();这句代码是使用当前时间创建日期对象 示例代码如下:...year =cal.get(Calendar.YEAR); //年 int month =cal.get(Calendar.MONTH)+1; //月 默认是从0开始 即1月获取到的是...; //获取出来的是当前时间的毫秒值 //把毫秒值转换成时间格式 Date d=new Date(); d.setTime(now); /** * 创建格式化时间日期类...发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/180233.html原文链接:https://javaforall.cn

4.5K31

java系统当前时间_java获取当前系统时间方法

(“yyyy-MM-dd HH:mm:ss”); String ly_time = sdf.format(new java.util.Date()); System.out.println(“现在时间是...-28 14:19:49 ======================= java获取当前时间2008年04月14日 星期一 10:11//这是个获取当前时间的简单实例,如下: //——————————...3、在JSP页面上可以通过一下方法获取: function printDate() { var today=new Date(); var day=today.getDate(); var month...year=c.get(Calendar.YEAR); month=c.get(Calendar.MONTH)+1;//系统日期从0开始算起 day=c.get(Calendar.DAY_OF_MONTH...发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/180210.html原文链接:https://javaforall.cn

4.4K20

Java获取系统时间的正确方式

前言 如果代码中获取时间使用的System.currentTimeMillis();,这样在单线程的情况下完全没问题,但是如果是多线程比如说后端提供的数据服务,那么就会出现严重的性能问题,导致服务不可用...简单来讲就是: 调用gettimeofday()需要从用户态切换到内核态; gettimeofday()的表现受Linux系统的计时器(时钟源)影响,在HPET计时器下性能尤其差; 系统只有一个全局时钟源...HPET计时器性能较差的原因是会将所有对时间戳的请求串行执行。 TSC计时器性能较好,因为有专用的寄存器来保存时间戳。...处理方法 如何解决这个问题? 最常见的办法是用单个调度线程来按毫秒更新时间戳,相当于维护一个全局缓存。 其他线程取时间戳时相当于从内存取,不会再造成时钟资源的争用,代价就是牺牲了一些精确度。...,有一定精度上问题,得到是时间获取上效率。

1.1K20

Java获取系统当前时间年月日

Java中使用java.util.Date类和java.time.LocalDate类来获取系统当前的时间,年份,月份和日期。...下面是获取当前日期和时间的代码示例: import java.util.Date; public class GetCurrentDateTime {     public static void main...Date date = new Date();                  // print the date         System.out.println("当前日期和时间: " + date.toString...());     } } 二、使用java.time.LocalDate获取当前年月日 使用Java 8引入的java.time包中的LocalDate类,可以很方便地获取当前日期的年份,月份和日子。...formatter.format(now);                  // print the date and time         System.out.println("当前年月日和时间

65030

js如何获取计算机当前时间,js获取当前系统时间实例代码

在javascript中使用date日期函数,取得当前系统时间的方法: var mydate = new date(); mydate.getyear(); //获取当前年份(2位) mydate.getfullyear...(); //获取当前日期 var mytime=mydate.tolocaletimestring(); //获取当前时间 mydate.tolocalestring( ); //获取日期与时间 例2,...获取想要的时间: 复制代码 代码示例: /*获取当前时间及当前时间加n分钟后的时间*/ function curenttime(addtime) { var now = new date(); var.../获取完整时间戳 var timestamp=new date().gettime(); //获取完整时间戳 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。...发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/180476.html原文链接:https://javaforall.cn

16.9K40

java获取当前系统时间毫秒值_java 当前日期

= new Date(); date.getTime(); 获取时间的毫秒值 //第一种方法 //获取00:00:00时的毫秒数 String s= DateFormatUtils.format...= System.currentTimeMillis(); 通常很多人都习惯使用new Date()来获取当前时间,使用起来也比较方便,同时还可以获取与当前时间有关的各方面信息,例如获取小时,分钟等等...为了获取这个时间戳,很多人也喜欢使用new Date().getTime()去获取,咋一看没什么问题,但其实没这个必要。...//获得系统时间,单位为毫秒,转换为妙 long totalMilliSeconds = System.currentTimeMillis(); long totalSeconds...发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/197875.html原文链接:https://javaforall.cn

4.4K10

如何通过Java反射获取泛型类型信息

泛型的使用场景 在讨论如何用反射获取泛型类型之前,我们先来回顾下,在Java里面什么时候会使用泛型,了解这个问题之后,我们才能继续思考如何用反射获取泛型类型。...但类似第二种场景中通过对象的指针引用,我们是可以通过反射获取其泛型的类型信息的,但要注意局部变量是没法获取其泛型信息的。...在Java里面可以通过反射获取泛型信息的场景有三个,分别是: (1)成员变量的泛型 (2)方法参数的泛型 (3)方法返回值的泛型 注意,通过对象本身也是没法获取的。...不能通过发射获取泛型类型信息的场景有二个,分别是: (1)类或接口声明的泛型信息 (2)局部变量的泛型信息 获取方法返回值的泛型类型 如下面定义的一个测试类: public class MyClass...,并介绍了那些场景不能使用反射获取其类型信息,通过反射获取参数的类型的泛型信息其实是非常有用的一个功能,比如在一些json工具的开源包里面,可以对Java里面泛型的各种List,List等类型做正确识别

8.9K21
领券