每日一例 | ?jdk1.8新特性之instant
前言
昨天我們分享了Date這個(gè)特別常用的日期時(shí)間類,介紹了常用的方法,同時(shí)了也預(yù)告要開始探索jdk1.8日期時(shí)間這塊的新特性,今天我們就先來看下我們的第一個(gè)新特性類——Instant。
寫完以后,我才發(fā)現(xiàn)今天的內(nèi)容有點(diǎn)水,但是沒辦法呀,自己選的主題,含著淚也得把他寫完……
Instant
要開始水了……
簡(jiǎn)介
instant的中文是立即、立刻、馬上,官方給的注釋是:
An instantaneous point on the time-line.
意思是時(shí)間線上的瞬時(shí)點(diǎn)。Instant表示的時(shí)間精度比較高,它可以獲取當(dāng)前時(shí)間的納秒。

納秒的時(shí)間范圍是0~999,999,999。下來,我們看下它有哪些常用的方法,以及這些常用方法的用法。
常用方法
構(gòu)造方法
Instant無對(duì)外提供的構(gòu)造方法,所以無法通過new的方式來構(gòu)建
now()
這個(gè)方法我們昨天有提到過,是一個(gè)靜態(tài)方法,作用是獲取當(dāng)前時(shí)刻對(duì)應(yīng)的Instant實(shí)例。
這個(gè)方法還支持傳入Clock實(shí)例的方式調(diào)用,它的作用就是獲取Clock對(duì)于時(shí)刻的Instant實(shí)例。
Instant now = Instant.now();
ofEpochSecond(long epochSecond)
靜態(tài)方法,獲取距離1970-01-01T00:00:00(java起始時(shí)間)epochSecond秒之后的Instant實(shí)例。
Instant instant = Instant.ofEpochSecond(24*3600L);
上面這個(gè)instant表示1970-01-02T00:00:00對(duì)應(yīng)的Instant實(shí)例。
ofEpochSecond(long epochSecond, long nanoAdjustment)
和上面的方法類似,這個(gè)方法多了一個(gè)參數(shù)nanoAdjustment,納秒
ofEpochMilli(long epochMilli)
這個(gè)也類似,只是偏移的單位變成了毫秒
from(TemporalAccessor temporal)
從TemporalAccessor中獲取Instant實(shí)例,TemporalAccessor我還沒了解。這個(gè)方法就是一個(gè)轉(zhuǎn)換方法,instant繼承了Temporal,而Temporal又繼承了TemporalAccessor


parse(final CharSequence text)
這個(gè)方法類似于DateFormat的日期轉(zhuǎn)換方法,只是這里轉(zhuǎn)換的是instant,入?yún)⒌母袷奖仨毷沁@樣的:
1970-01-02T00:00:00Z
isSupported(TemporalField field)
判斷instant是否支持傳入的時(shí)間精度,可以是NANO_OF_SECOND、MICRO_OF_SECOND、MILLI_OF_SECOND、INSTANT_SECONDS
isSupported(TemporalUnit unit)
判斷instant是否支持傳入的時(shí)間單位
range(TemporalField field)
獲取傳入類型的范圍(ValueRange),可以是NANO_OF_SECOND、MICRO_OF_SECOND、MILLI_OF_SECOND、INSTANT_SECONDS
get(TemporalField field)
獲取對(duì)應(yīng)單位的數(shù)據(jù)值,返回值可以是int或者long
getEpochSecond()
獲取當(dāng)前instant與1970-01-01T00:00:00的間隔秒數(shù)
getNano()
獲取當(dāng)前instant的納秒數(shù)
with(TemporalAdjuster adjuster)
獲取當(dāng)前instant調(diào)整后的instant,TemporalAdjuster表示修正的幅度
with(TemporalField field, long newValue)
方法同上,只是這里是修正指定的字段
with(TemporalField field, long newValue)
截取當(dāng)前instant指定單位,并返回新的instant
plus(TemporalAmount amountToAdd)
當(dāng)前instant增加amountToAdd的時(shí)間,amountToAdd可以是2年,3·個(gè)月,8天等
plus(long amountToAdd, TemporalUnit unit)
指定單位上,增加相應(yīng)的時(shí)間,同上。
plusSeconds(long secondsToAdd)
秒位上增加相應(yīng)的時(shí)間
plusMillis(long millisToAdd)
毫秒位上增加相應(yīng)的時(shí)間
plusNanos(long nanosToAdd)
納秒位增加相應(yīng)的時(shí)間
總結(jié)
其實(shí),關(guān)于instant的方法還有一些,沒有講完,主要是我覺得沒意義,實(shí)在是沒有耐心再寫下去了
,這干巴巴地寫,確實(shí)挺無聊的,今天真的是大意了,感覺把自己坑了
,時(shí)間浪費(fèi)了,最后感覺這個(gè)類好像不咋用。我太難了……
總之,今天寫了一大堆,最后的結(jié)論是,這個(gè)類不常用,除非你對(duì)時(shí)間精度真的有要求,反正我覺得我是沒機(jī)會(huì)用了,后面再選主題得慎重了,不能再像今天這么水了
好了,今天碼了兩篇文章,感覺不在狀態(tài),但是第一篇還是比較實(shí)用的,大家有興趣的話,記得要?jiǎng)邮智靡磺?,不然真的很容易忘記,今天我在?gòu)建springboot項(xiàng)目的時(shí)候,感覺好多配置上的知識(shí)都有點(diǎn)迷了,不抓緊練一練,后面架子都搭不起來啦
