jdk1 8版本新特性之日期計算

2021-08-25 19:22:30 字數 2169 閱讀 6958

localdate now = localdate.now();// 2018/8/25

localdate start = localdate.parse("2018-07-20", datetimeformatter.ofpattern("yyyy-mm-dd"));

long daysdiff = chronounit.days.between(start, now);

long monthdiff = chronounit.months.between(start, now);

long yeardiff = chronounit.years.between(start, now);

system.out.println("now : " + now);

system.out.println("start : " + start);

system.out.printf("相差:%d年%d月%d天",yeardiff,monthdiff,daysdiff);

now : 2018-08-25

start : 2018-07-20

相差:0年1月36天

檢視源**可知chronounit是乙個列舉,包含了nanos(納秒)到years(年)等一些例項。

##period類計算時間差

localdate today = localdate.now();

system.out.println("today : " + today);

localdate birthdate = localdate.of(2018, month.july, 20);// localdate.of(2018, 7, 20)

system.out.println("birthdate : " + birthdate);

period p = period.between(birthdate, today);

system.out.printf("年齡 : %d 年 %d 月 %d 日", p.getyears(), p.getmonths(), p.getdays());

年齡 : 0 年 1 月 5 日
**注意:**大家發現上面兩者時間差的區別沒有。

1.因為chronounit獲取年、月、日的時候分別都進行了一次between,所以每次獲取的都是完整的時間差。而period是先執行between後,再通過get方法獲取年、月、日

2.localdate有兩種解析日期的方法(parse、of)

各種方法依據實際情況而用效果更佳

##instant、duration配合計算瞬時值

有時候會在**中列印計算程式執行的時間,比如跑多執行緒的時候

既然用的是jdk8版本,就用逼格更高的操作

instant inst1 = instant.now();

system.out.println("inst1 : " + inst1);

instant inst2 = inst1.plus(duration.ofseconds(10));

system.out.println("inst2 : " + inst2);

system.out.println("毫秒 : " + duration.between(inst1, inst2).tomillis());

system.out.println("秒 : " + duration.between(inst1, inst2).getseconds());

inst1 : 2018-08-25t02:30:45.872z

inst2 : 2018-08-25t02:30:55.872z

毫秒 : 10000

秒 : 10

注意:instant inst3 = new date().toinstant();

JDK1 8的新特性

jdk1.8之前的介面不可以有方法體,但從jdk1.8開始,介面中的方法可以帶有方法體為什麼要新增這個特性?介面就是為了定義乙個標準,這個標準要求所有的實現類實現這些抽象方法。但存在某些方法,所有的實現類 都是一樣的,索性就把這些 挪到介面中。使用的方法?通過default來修飾這個方法public...

JDK1 8新特性簡介

可以用static default來定義介面方法 用default來定義普通方法,這樣子類就不用強制覆寫這個方法了。用static來定義靜態方法 專給lanmda使用的介面加上annotation functionalinte ce 其中只能有乙個方法 使用 引數 程式執行語句 引數 簡單返回 引數...

JDK1 8 新特性(全)

hashmap資料結構 在jdk1.8中對hashmap等map集合的資料結構優化。hashmap資料結構的優化 知識點 1 原來的hashmap採用的資料結構是雜湊表 陣列 鍊錶 hashmap預設大小是16,乙個0 15索引的陣列,2 如何往裡面儲存元素 首先呼叫元素的hashcode 方法,計...