📅  最后修改于: 2023-12-03 15:16:03.074000             🧑  作者: Mango
Java 8的java.time
包中,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
类提供了一些方法来操作时间戳。下面是一些简单的例子:
获取秒数:
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
转换为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 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
类我们可以很方便地进行时间戳的比较和操作,同时也可以很容易地将时间戳转换为其它日期时间类的实例。