每日一例 | jdk1.8新特性之instant
前言
昨天我们分享了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:00(java起始时间)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()
获取当前instant与1970-01-01T00:00:00的间隔秒数
getNano()
获取当前instant的纳秒数
with(TemporalAdjuster adjuster)
获取当前instant调整后的instant,TemporalAdjuster表示修正的幅度
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项目的时候,感觉好多配置上的知识都有点迷了,不抓紧练一练,后面架子都搭不起来啦
