📜  Java8 Instant类(1)

📅  最后修改于: 2023-12-03 15:16:03.074000             🧑  作者: Mango

Java8 Instant类

介绍

Java 8的java.time包中,Instant类是表示时间戳的瞬时点。它是不可变的类,可以很容易地进行比较和操作。

创建Instant对象

创建Instant对象可以使用now()方法获取当前时间:

Instant instant = Instant.now();
System.out.println(instant);

也可以通过字符串解析的方式创建:

Instant instant = Instant.parse("2021-07-28T01:23:45.678Z");
System.out.println(instant);
操作Instant对象

Instant类提供了一些方法来操作时间戳。下面是一些简单的例子:

获取秒数:

long seconds = instant.getEpochSecond();
System.out.println(seconds);

获取纳秒数:

int nano = instant.getNano();
System.out.println(nano);

在现有的时间戳上加上几秒:

Instant newInstant = instant.plusSeconds(5);
System.out.println(newInstant);

在现有的时间戳上减去几秒:

Instant newInstant = instant.minusSeconds(5);
System.out.println(newInstant);
Instant与其他日期时间类的转换

Instant类是一个时间戳,可以通过其它日期时间类进行转换,下面是一些简单的例子:

Instant转换为LocalDateTime

LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
System.out.println(localDateTime);

Instant转换为ZonedDateTime

ZonedDateTime zonedDateTime = instant.atZone(ZoneId.systemDefault());
System.out.println(zonedDateTime);

Instant转换为Date

Date date = Date.from(instant);
System.out.println(date);
Instant的比较

Instant类支持比较操作,可以很容易地获取早于或晚于其他瞬时时间点的实例。

比较两个时间戳是否相等:

Instant instant1 = Instant.parse("2021-07-28T01:23:45.678Z");
Instant instant2 = Instant.parse("2021-07-28T02:23:45.678Z");
System.out.println(instant1.equals(instant2)); // false

比较两个时间戳的大小:

System.out.println(instant1.isAfter(instant2)); // false
System.out.println(instant1.isBefore(instant2)); // true
总结

Instant类是Java 8中新引入的类,它提供了一个简单的方法来表示时间戳,并且提供了一些方便的方法来操作时间戳。通过Instant类我们可以很方便地进行时间戳的比较和操作,同时也可以很容易地将时间戳转换为其它日期时间类的实例。