lnstant:时间线上的一个瞬时点。这可能被用来记录应用程序中的事件时间戳。
在处理时间和日期的时候,我们通常会想到年,月,日,时,分,秒。然而,这只是时间的一个模型,是面向人类的。第二种通用模型是面向机器的,或者说是连续的。在此模型中,时间线中的一个点表示为一个很大的数,这有利于计算机处理。在UNIX中,这个数从1970年开始,以秒为的单位;同样的,在Java中,也是从1970年开始,但以毫秒为单位。
java.time包通过值类型Instant提供机器视图,不提供处理人类意义上的时间单位。Instant表示时间线上的一点,而不需要任何上下文信息,例如,时区。概念上讲,它只是简单的表示自1970年1月1日0时0分0秒(UTC)开始的秒数。因为java.time包是基于纳秒计算的,所以Instant的精度可以达到纳秒级。
(1 ns = 10-9s) 1秒=1000毫秒=10^6微秒=10^9纳秒
代码如下:
import java.time.Instant;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
public class StartApplication {
public static void main(String[] args) {
//now()∶获取本初子午线对应的标准时间
Instant instant = Instant.now();
System.out.println(instant);
//时间偏移量
OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));
System.out.println(offsetDateTime);
//toEpochMilli()∶获取自1970年1月1日e时e分0秒(UTC)开始的毫秒数-->Date类的getTime()
long milli = instant.toEpochMilli();
System.out.println(milli);
//ofEpochMilli():通过给定的毫秒数,获取Instant实例-->Date(Long millis)
Instant ofEpochMilli = Instant.ofEpochMilli(1652169597572L);
System.out.println(ofEpochMilli);
}
}
结果如下:
2022-05-10T08:04:32.230Z
2022-05-10T16:04:32.230+08:00
1652169872230
2022-05-10T07:59:57.572Z
本文介绍了Java中的时间处理类Instant,它是时间线上的一个瞬时点,表示自1970年1月1日0时0分0秒(UTC)开始的秒数,精度可达纳秒。通过示例代码展示了如何获取当前时间、转换时区以及与毫秒数之间的转换操作。
3767

被折叠的 条评论
为什么被折叠?



