摘要:上一篇文章,小樂給大家?guī)砹诵绿匦灾酉聛肀疚膶o大家介紹新特性之前言通過發(fā)布新的來進(jìn)一步加強(qiáng)對日期與時間的處理。
上一篇文章,小樂給大家?guī)砹薐ava8新特性之Optional,接下來本文將會給大家介紹Java8新特性之Date API
前言:Java 8通過發(fā)布新的Date-Time API來進(jìn)一步加強(qiáng)對日期與時間的處理。 舊版的 Java 中,日期時間 API 存在諸多問題 :
非線程安全?? java.util.Date 是非線程安全的,所有的日期類都是可變的,
設(shè)計(jì)很差?? Java的日期/時間類的定義并不一致,在java.util和java.sql的包中都有日期類,此外用于格式化和解析的類在java.text包中定義。
時區(qū)處理麻煩?? 日期類并不提供國際化,沒有時區(qū)支持
Java 8 在?java.time?包下提供了很多新的 API。以下為兩個比較重要的 API:
Local(本地)?: 簡化了日期時間的處理,沒有時區(qū)的問題。
Zoned(時區(qū))?? 通過制定的時區(qū)處理日期時間。
新的java.time包涵蓋了所有處理日期,時間,日期/時間,時區(qū),時刻(instants),過程(during)與時鐘(clock)的操作。
1、LocalDateTimeLocalDateTime ldt = LocalDateTime.now(); // 獲取系統(tǒng)當(dāng)前時間 System.out.println(ldt); LocalDateTime ldt2 = LocalDateTime.of(2019, 01, 01, 12, 12, 12, 888000000); // 構(gòu)建LocalDateTime對象ldt System.out.println(ldt2); // 獲取明年此時的時間 LocalDateTime ldt3 = ldt.plusYears(1); System.out.println(ldt3); // 獲取去年此刻時間 LocalDateTime ldt4 = ldt.minusYears(1); System.out.println(ldt4); // 獲取年 System.out.println(ldt.getYear()); // 獲取月份 System.out.println(ldt.getMonthValue()); // 獲取本月第某天 System.out.println(ldt.getDayOfMonth()); // 獲取時 System.out.println(ldt.getHour()); // 獲取分 System.out.println(ldt.getMinute()); // 獲取秒 System.out.println(ldt.getSecond()); // 獲取納秒 System.out.println(ldt.getNano());2、時間戳
時間戳:以Unix元年:1970年1月1日 00:00:00 至目前時間之間的毫秒值 public static void testInstant(){ // 時間戳 Instant Instant ins1 = Instant.now(); // 默認(rèn)獲取UTC時間,協(xié)調(diào)世界時 System.out.println(ins1); OffsetDateTime odt = ins1.atOffset(ZoneOffset.ofHours(8)); System.out.println(odt); System.out.println(ins1.toEpochMilli()); Instant ins2 = Instant.ofEpochSecond(60); System.out.println(ins2); }3、日期時間間隔計(jì)算:Duration、Period
public static void testDuration(String[] args) { Instant ins1 = Instant.now(); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } Instant ins2 = Instant.now(); Duration dura = Duration.between(ins1, ins2); System.out.println(dura.toMillis()); System.out.println("----------------------"); LocalTime lt1 = LocalTime.now(); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } LocalTime lt2 = LocalTime.now(); Duration dura2 = Duration.between(lt1, lt2); System.out.println(dura2.toMillis()); } public static void testPeriod(){ LocalDate ld1 = LocalDate.of(2015, 2, 2); LocalDate ld2 = LocalDate.now(); Period period = Period.between(ld1, ld2); System.out.println(period); System.out.println("相差" + period.getYears() + "年" + period.getMonths() + "月" + period.getDays() + "天"); }4、時間校正:TemporalAdjuster
public static void testTemporalAdjuster(){ LocalDateTime ldt = LocalDateTime.now(); System.out.println(ldt); LocalDateTime ldt2 = ldt.withDayOfMonth(10); System.out.println(ldt2); LocalDateTime ldt3 = ldt.with(TemporalAdjusters.next(DayOfWeek.SATURDAY)); System.out.println(ldt3); }5、日期時間格式化
public static void testDateFormate(){ DateTimeFormatter dtf = DateTimeFormatter.ISO_DATE; LocalDateTime ldt = LocalDateTime.now(); String strDate = ldt.format(dtf); System.out.println(strDate); System.out.println("----------------------------"); DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss"); String strDate2 = dtf2.format(ldt); System.out.println(strDate2); System.out.println("-----------------------------"); LocalDateTime newDate = ldt.parse(strDate2, dtf2); System.out.println(newDate); }6、TimeZone 時區(qū)處理
// 時區(qū)的處理 public static void testTimeZone(){ LocalDateTime ldt = LocalDateTime.now(ZoneId.of("Europe/Dublin")); System.out.println(ldt); LocalDateTime ldt2 = LocalDateTime.now(ZoneId.of("Europe/Dublin")); ZonedDateTime zdt = ldt2.atZone(ZoneId.of("Europe/Dublin")); System.out.println(zdt); }
這次就分享到這里了,后面小樂會繼續(xù)給大家介紹Java8新特性的,請大家繼續(xù)多多關(guān)注哦!樂字節(jié)只講Java技術(shù)干貨。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/77601.html
摘要:上一篇小樂給大家說了樂字節(jié)新特性之,接下來小樂繼續(xù)給大家說一說新特性之和重復(fù)注解與類型注解。內(nèi)部類與方法相關(guān)的內(nèi)部類這是一個靜態(tài)類。也是一個靜態(tài)類。 上一篇小樂給大家說了《樂字節(jié)-Java8新特性之Date API》,接下來小樂繼續(xù)給大家說一說Java8新特性之Base64和重復(fù)注解與類型注解。 一、Base64 在Java 8中,內(nèi)置了Base64編解碼相關(guān)的特性。Java 8中使用...
摘要:上一篇小樂介紹了新特性函數(shù)式接口,大家可以點(diǎn)擊回顧。中引入方法引用新特性用于簡化應(yīng)用對象方法的調(diào)用,方法引用是用來直接訪問類或者實(shí)例的已經(jīng)存在的方法或者構(gòu)造方法。方法引用是一種更簡潔易懂的表達(dá)式。 上一篇小樂介紹了《Java8新特性-函數(shù)式接口》,大家可以點(diǎn)擊回顧。這篇文章將接著介紹Java8新特性之方法引用。 Java8 中引入方法引用新特性,用于簡化應(yīng)用對象方法的調(diào)用,?方法引用是...
摘要:注意當(dāng)多個父接口中存在相同的默認(rèn)方法時,子類中以就近原則繼承。定義靜態(tài)默認(rèn)方法這是版簡易計(jì)算器接口默認(rèn)方法使用定義接口并提供默認(rèn)打印方法定義接口默認(rèn)方法支持方法形參這是數(shù)值運(yùn)算基本接口。。。 總概 JAVA8 已經(jīng)發(fā)布很久,而且毫無疑問,java8是自java5(2004年發(fā)布)之后的最重要的版本。其中包括語言、編譯器、庫、工具和JVM等諸多方面的新特性。 Java8 新特性列表如下:...
摘要:歸約操作計(jì)算有效訂單總金額有效訂單總金額收集數(shù)據(jù)收集將流轉(zhuǎn)換為其他形式,方法作為終端操作,接收一個接口的實(shí)現(xiàn),用于給中元素做匯總的方法。 接上一篇:《Java8新特性之stream》,下面繼續(xù)接著講Stream 5、流的中間操作 常見的流的中間操作,歸為以下三大類:篩選和切片流操作、元素映射操作、元素排序操作:showImg(https://segmentfault.com/img/b...
摘要:大家好,我是樂字節(jié)的小樂。需要注意的是很多流操作本身就會返回一個流,所以多個操作可以直接連接起來,如下圖這樣,操作可以進(jìn)行鏈?zhǔn)秸{(diào)用,并且并行流還可以實(shí)現(xiàn)數(shù)據(jù)流并行處理操作。為集合創(chuàng)建并行流。 大家好,我是樂字節(jié)的小樂。說起流,我們會聯(lián)想到手機(jī)、電腦組裝流水線,物流倉庫商品包裝流水線等等,如果把手機(jī) ,電腦,包裹看做最終結(jié)果的話,那么加工商品前的各種零部件就可以看做數(shù)據(jù)源,而中間一系列的...
閱讀 2658·2021-11-25 09:43
閱讀 2760·2021-11-04 16:09
閱讀 1695·2021-10-12 10:13
閱讀 907·2021-09-29 09:35
閱讀 908·2021-08-03 14:03
閱讀 1798·2019-08-30 15:55
閱讀 3024·2019-08-28 18:14
閱讀 3603·2019-08-26 13:43