一、Instant
我们已经知道,计算机存储的当前时间,本质上只是一个不断递增的整数。Java提供的System.currentTimeMillis()返回的就是以毫秒表示的当前时间戳。这个当前时间戳在java.time中以Instant类型表示,我们用Instant.now()获取当前时间戳,效果和System.currentTimeMillis()
1、静态方法,获取对象
其实我们还可以通过
Date
的Instant toInstant()
方法获取Instant
对象
static Instant ofEpochMilli(long epochMilli)
static Instant ofEpochSecond(long epochSecond)
static Instant ofEpochSecond(long epochSecond, long nanoAdjustment)
static Instant from(TemporalAccessor temporal)
static Instant now()
static Instant now(Clock clock)
static Instant parse(CharSequence text)
2、时间计算
//加
Instant plus(long amountToAdd, TemporalUnit unit)
Instant plus(TemporalAmount amountToAdd)
Instant plusMillis(long millisToAdd)
Instant plusNanos(long nanosToAdd)
Instant plusSeconds(long secondsToAdd)
//减
Instant minus(long amountToSubtract, TemporalUnit unit)
Instant minus(TemporalAmount amountToSubtract)
Instant minusMillis(long millisToSubtract)
Instant minusNanos(long nanosToSubtract)
Instant minusSeconds(long secondsToSubtract)
//自定义
Instant with(TemporalAdjuster adjuster)
Instant with(TemporalField field, long newValue)
3、信息获取
int get(TemporalField field)
long getLong(TemporalField field)
long getEpochSecond()//返回此瞬间到1970-01-01T00:00:00Z的秒数
int getNano()
4、对象统计
long toEpochMilli()//自1970-01-01T00:00:00Z时代以来的毫秒数
5、信息判断
boolean isAfter(Instant otherInstant)
boolean isBefore(Instant otherInstant)
boolean isSupported(TemporalField field)
boolean isSupported(TemporalUnit unit)
6、对象类型转换
Temporal adjustInto(Temporal temporal)
OffsetDateTime atOffset(ZoneOffset offset)
ZonedDateTime atZone(ZoneId zone)
7、其他方法
long until(Temporal endExclusive, TemporalUnit unit)
<R> R query(TemporalQuery<R> query)
二、Clock
public abstract class Clock extends Object
1、获取对象
static Clock systemUTC() 获取格林尼治时钟
static Clock systemDefaultZone() 获取本地时钟
static Clock system(ZoneId zone)
static Clock fixed(Instant fixedInstant, ZoneId zone)
static Clock offset(Clock baseClock, Duration offsetDuration)
static Clock tick(Clock baseClock, Duration tickDuration)
static Clock tickMinutes(ZoneId zone)
static Clock tickSeconds(ZoneId zone)
2、其他方法
boolean equals(Object obj)
abstract ZoneId getZone()
abstract Instant instant()
long millis()
abstract Clock withZone(ZoneId zone)