您的位置:

Java生成时间戳

一、时间戳的概念

时间戳是指一个能够表示一段时间的唯一标识符,通常是指从某个固定的时间点开始算起所经过的毫秒数或秒数。在计算机系统中,时间戳被广泛应用于日志记录、数据标记等方面。

二、Java中的时间戳

Java语言中提供了多种生成时间戳的方式,下面我们将对最常用的几种进行介绍。

三、使用System类

System类是Java中的一个预定义类,它包含了一些系统级别的属性和方法。其中,currentMillis()方法返回当前时间的毫秒数。可以使用该方法获取从1970年1月1日 00:00:00到当前时间的毫秒数。

    long timeMillis = System.currentTimeMillis();  //获取当前时间的毫秒数
    System.out.println(timeMillis);

使用System类获取时间戳非常简单,但是System.currentTimeMillis()方法返回的时间戳精度只能到毫秒,不够精确。

四、使用Calendar类

Java中还提供了一个Calendar类,它可以用于生成精度更高的时间戳,并且可以将时间戳转换成日期。

Calendar类有两种获取时间戳的方法:

1. getTimeInMillis()方法:返回Calendar对象所代表的时间戳。

    Calendar calendar = Calendar.getInstance();    //获取Calendar对象
    System.out.println(calendar.getTimeInMillis()); //获取时间戳

2. setTimeInMillis()方法:将Calendar对象设置为指定的时间戳。

    Calendar calendar = Calendar.getInstance();    //获取Calendar对象
    calendar.setTimeInMillis(timeMillis);           //设置时间戳

除此之外,Calendar类还可以将时间戳转换成日期。

    Calendar calendar = Calendar.getInstance();        //获取Calendar对象
    calendar.setTimeInMillis(timeMillis);               //设置时间戳
    Date date = calendar.getTime();                     //将Calendar对象转换成Date对象
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String str = format.format(date);                   //将Date对象格式化为字符串
    System.out.println(str);

五、使用Date类

除了Calendar类之外,Java还提供了一个Date类,它可以用于生成时间戳,并且可以将时间戳转换成日期。

1. getTime()方法:返回当前Date对象表示的时间戳。

    Date date = new Date();             //获取Date对象
    System.out.println(date.getTime()); //获取时间戳

2. setTime()方法:将Date对象设置为指定的时间戳。

    long timeMillis = System.currentTimeMillis();  //获取当前时间的毫秒数
    Date date = new Date();                         //获取Date对象
    date.setTime(timeMillis);                      //设置时间戳

除此之外,Date类还可以将时间戳转换成日期。

    long timeMillis = System.currentTimeMillis();  //获取当前时间的毫秒数
    Date date = new Date();                         //获取Date对象
    date.setTime(timeMillis);                      //设置时间戳
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String str = format.format(date);                    //将Date对象格式化为字符串
    System.out.println(str);

六、使用Instant类

Java 8引入了一个新的时间日期API,其中包含了一个Instant类,它可以用于生成时间戳,并且可以将时间戳转换成日期。

1. now()方法:返回当前时间的时间戳。

    Instant instant = Instant.now();        //获取Instant对象
    System.out.println(instant.toEpochMilli());

2. ofEpochMilli()方法:将时间戳转换成Instant对象。

    long timeMillis = System.currentTimeMillis();  //获取当前时间的毫秒数
    Instant instant = Instant.ofEpochMilli(timeMillis);   //将时间戳转换成Instant对象

除此之外,Instant类还可以将时间戳转换成日期。

    long timeMillis = System.currentTimeMillis();
    Instant instant = Instant.ofEpochMilli(timeMillis);
    LocalDateTime datetime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());   //将Instant对象转换成LocalDateTime对象
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");    
    String str = formatter.format(datetime);     //将LocalDateTime对象格式化为字符串
    System.out.println(str);

七、总结

Java中生成时间戳的方法有很多种,我们可以根据精度、代码复杂度等因素来选择不同的方法。其中,使用System类生成时间戳非常简单,但是精度只能到毫秒;使用Calendar类比较全面,可以将时间戳转换成日期,但是代码比较繁琐;使用Date类也比较简单,但是它已经被官方声明为过时的类;使用Instant类可以方便地将时间戳转换成日期,但需要Java 8及以上的版本。