每日一例 | 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
项目的时候,感觉好多配置上的知识都有点迷了,不抓紧练一练,后面架子都搭不起来啦