介绍
- java.time.Instant
- 类声明
@jdk.internal.ValueBased
public final class Instant implements Temporal, TemporalAdjuster, Comparable<Instant>, Serializable
- 时间线上的一个瞬时点,可以理解成时刻
- 被称为“新纪元”的时间线原点被设置为穿过伦敦格林威治皇家天文台的本初子午线所处时区的 1970 年 1 月 1 日的午夜
- 存储了一个代表纪元秒的long整型 (
seconds
) 和一个int纳秒的整型 (nanos
) - Java API 定义了自己的时间尺度,即 Java Time-Scale ,使用 JSR-310 API
- 不可变,线程安全
- 实现
Temporal
,支持的时间单位(TemporalUnit
)有- NANOS
- MICROS
- MILLIS
- SECONDS
- MINUTES
- HOURS
- HALF_DAYS
- DAYS
- 实现
TemporalAccessor
,支持的时间域(TemporalField
)有- NANO_OF_SECOND
- MICRO_OF_SECOND
- MILLI_OF_SECOND
- INSTANT_SECONDS
- 类似于
java.util.Date
,通过toInstant
和from
相互转换
API
常量字段
- EPOCH : 1970-01-01T00:00:00Z
- 纪元时刻
- MIN : -1000000000-01-01T00:00:00Z
- 支持的最小 Instant
- MAX : +1000000000-12-31T23:59:59.999999999Z
- 支持的最大 Instant
static
- now
Instant now()
Instant now(Clock clock)
- 从系统时钟获取当前时刻,这将查询 system UTC clock 以获取当前时刻
- from
Instant from(TemporalAccessor temporal)
- 转换为
Instant
- ofEpochMilli
Instant ofEpochMilli(long epochMilli)
- 使用毫秒获取Instant
- ofEpochSecond
Instant ofEpochSecond(long epochSecond)
Instant ofEpochSecond(long epochSecond, long nanoAdjustment)
- 使用秒数获取Instant
- parse
Instant parse(final CharSequence text)
- 反
toString
- 格式示例:
2023-06-29T10:07:34.814427100Z
public
-
getEpochSecond
seconds
-
getNano
nanos
-
atOffset
- 将此时刻与偏移量相结合以创建
OffsetDateTime
- 将此时刻与偏移量相结合以创建
-
atZone
- 将此时刻与时区结合起来创建
ZonedDateTime
- 将此时刻与时区结合起来创建
-
isAfter
-
isBefore
-
toEpochMilli
- 将此时刻转换为从 1970-01-01T00:00:00Z 纪元开始的毫秒数
-
truncatedTo
- 截断
-
toString
- ISO-8601 表示形式
- 格式示例:
2023-06-29T10:07:34.814427100Z
算数计算
- minus
- minusMillis
- minusNanos
- minusSeconds
- plus
- plusMillis
- plusNanos
- plusSeconds