每日一例 | ​jdk1.8新特性之instant

云中志

共 2369字,需浏览 5分钟

 ·

2021-05-28 14:04

前言

昨天我们分享了Date这个特别常用的日期时间类,介绍了常用的方法,同时了也预告要开始探索jdk1.8日期时间这块的新特性,今天我们就先来看下我们的第一个新特性类——Instant

写完以后,我才发现今天的内容有点水,但是没办法呀,自己选的主题,含着泪也得把他写完……

Instant

要开始水了……

简介

instant的中文是立即、立刻、马上,官方给的注释是:

An instantaneous point on the time-line.

意思是时间线上的瞬时点。Instant表示的时间精度比较高,它可以获取当前时间的纳秒。

纳秒的时间范围是0~999,999,999。下来,我们看下它有哪些常用的方法,以及这些常用方法的用法。

常用方法

构造方法

Instant无对外提供的构造方法,所以无法通过new的方式来构建

now()

这个方法我们昨天有提到过,是一个静态方法,作用是获取当前时刻对应的Instant实例。

这个方法还支持传入Clock实例的方式调用,它的作用就是获取Clock对于时刻的Instant实例。

Instant now = Instant.now();
ofEpochSecond(long epochSecond)

静态方法,获取距离1970-01-01T00:00:00java起始时间)epochSecond秒之后的Instant实例。

Instant instant = Instant.ofEpochSecond(24*3600L);

上面这个instant表示1970-01-02T00:00:00对应的Instant实例。

ofEpochSecond(long epochSecond, long nanoAdjustment)

和上面的方法类似,这个方法多了一个参数nanoAdjustment,纳秒

ofEpochMilli(long epochMilli)

这个也类似,只是偏移的单位变成了毫秒

from(TemporalAccessor temporal)

TemporalAccessor中获取Instant实例,TemporalAccessor我还没了解。这个方法就是一个转换方法,instant继承了Temporal,而Temporal又继承了TemporalAccessor

parse(final CharSequence text)

这个方法类似于DateFormat的日期转换方法,只是这里转换的是instant,入参的格式必须是这样的:

1970-01-02T00:00:00Z
isSupported(TemporalField field)

判断instant是否支持传入的时间精度,可以是NANO_OF_SECOND、MICRO_OF_SECOND、MILLI_OF_SECOND、INSTANT_SECONDS

isSupported(TemporalUnit unit)

判断instant是否支持传入的时间单位

range(TemporalField field)

获取传入类型的范围(ValueRange),可以是NANO_OF_SECOND、MICRO_OF_SECOND、MILLI_OF_SECOND、INSTANT_SECONDS

get(TemporalField field)

获取对应单位的数据值,返回值可以是int或者long

getEpochSecond()

获取当前instant1970-01-01T00:00:00的间隔秒数

getNano()

获取当前instant的纳秒数

with(TemporalAdjuster adjuster)

获取当前instant调整后的instantTemporalAdjuster表示修正的幅度

with(TemporalField field, long newValue)

方法同上,只是这里是修正指定的字段

with(TemporalField field, long newValue)

截取当前instant指定单位,并返回新的instant

plus(TemporalAmount amountToAdd)

当前instant增加amountToAdd的时间,amountToAdd可以是2年,3·个月,8天等

plus(long amountToAdd, TemporalUnit unit)

指定单位上,增加相应的时间,同上。

plusSeconds(long secondsToAdd)

秒位上增加相应的时间

plusMillis(long millisToAdd)

毫秒位上增加相应的时间

plusNanos(long nanosToAdd)

纳秒位增加相应的时间

总结

其实,关于instant的方法还有一些,没有讲完,主要是我觉得没意义,实在是没有耐心再写下去了,这干巴巴地写,确实挺无聊的,今天真的是大意了,感觉把自己坑了,时间浪费了,最后感觉这个类好像不咋用。我太难了……

总之,今天写了一大堆,最后的结论是,这个类不常用,除非你对时间精度真的有要求,反正我觉得我是没机会用了,后面再选主题得慎重了,不能再像今天这么水了

好了,今天码了两篇文章,感觉不在状态,但是第一篇还是比较实用的,大家有兴趣的话,记得要动手敲一敲,不然真的很容易忘记,今天我在构建springboot项目的时候,感觉好多配置上的知识都有点迷了,不抓紧练一练,后面架子都搭不起来啦

- END -


浏览 86
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报