摘要:上一篇文章,小樂給大家帶來了新特性之,接下來本文將會給大家介紹新特性之前言通過發布新的來進一步加強對日期與時間的處理。
上一篇文章,小樂給大家帶來了Java8新特性之Optional,接下來本文將會給大家介紹Java8新特性之Date API
前言:Java 8通過發布新的Date-Time API來進一步加強對日期與時間的處理。 舊版的 Java 中,日期時間 API 存在諸多問題 :
非線程安全?? java.util.Date 是非線程安全的,所有的日期類都是可變的,
設計很差?? Java的日期/時間類的定義并不一致,在java.util和java.sql的包中都有日期類,此外用于格式化和解析的類在java.text包中定義。
時區處理麻煩?? 日期類并不提供國際化,沒有時區支持
Java 8 在?java.time?包下提供了很多新的 API。以下為兩個比較重要的 API:
Local(本地)?: 簡化了日期時間的處理,沒有時區的問題。
Zoned(時區)?? 通過制定的時區處理日期時間。
新的java.time包涵蓋了所有處理日期,時間,日期/時間,時區,時刻(instants),過程(during)與時鐘(clock)的操作。
1、LocalDateTimeLocalDateTime ldt = LocalDateTime.now(); // 獲取系統當前時間 System.out.println(ldt); LocalDateTime ldt2 = LocalDateTime.of(2019, 01, 01, 12, 12, 12, 888000000); // 構建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(); // 默認獲取UTC時間,協調世界時 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、日期時間間隔計算: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 時區處理
// 時區的處理 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); }
這次就分享到這里了,后面小樂會繼續給大家介紹Java8新特性的,請大家繼續多多關注哦!樂字節只講Java技術干貨。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/77601.html
摘要:上一篇小樂給大家說了樂字節新特性之,接下來小樂繼續給大家說一說新特性之和重復注解與類型注解。內部類與方法相關的內部類這是一個靜態類。也是一個靜態類。 上一篇小樂給大家說了《樂字節-Java8新特性之Date API》,接下來小樂繼續給大家說一說Java8新特性之Base64和重復注解與類型注解。 一、Base64 在Java 8中,內置了Base64編解碼相關的特性。Java 8中使用...
摘要:上一篇小樂介紹了新特性函數式接口,大家可以點擊回顧。中引入方法引用新特性用于簡化應用對象方法的調用,方法引用是用來直接訪問類或者實例的已經存在的方法或者構造方法。方法引用是一種更簡潔易懂的表達式。 上一篇小樂介紹了《Java8新特性-函數式接口》,大家可以點擊回顧。這篇文章將接著介紹Java8新特性之方法引用。 Java8 中引入方法引用新特性,用于簡化應用對象方法的調用,?方法引用是...
摘要:注意當多個父接口中存在相同的默認方法時,子類中以就近原則繼承。定義靜態默認方法這是版簡易計算器接口默認方法使用定義接口并提供默認打印方法定義接口默認方法支持方法形參這是數值運算基本接口。。。 總概 JAVA8 已經發布很久,而且毫無疑問,java8是自java5(2004年發布)之后的最重要的版本。其中包括語言、編譯器、庫、工具和JVM等諸多方面的新特性。 Java8 新特性列表如下:...
摘要:歸約操作計算有效訂單總金額有效訂單總金額收集數據收集將流轉換為其他形式,方法作為終端操作,接收一個接口的實現,用于給中元素做匯總的方法。 接上一篇:《Java8新特性之stream》,下面繼續接著講Stream 5、流的中間操作 常見的流的中間操作,歸為以下三大類:篩選和切片流操作、元素映射操作、元素排序操作:showImg(https://segmentfault.com/img/b...
摘要:大家好,我是樂字節的小樂。需要注意的是很多流操作本身就會返回一個流,所以多個操作可以直接連接起來,如下圖這樣,操作可以進行鏈式調用,并且并行流還可以實現數據流并行處理操作。為集合創建并行流。 大家好,我是樂字節的小樂。說起流,我們會聯想到手機、電腦組裝流水線,物流倉庫商品包裝流水線等等,如果把手機 ,電腦,包裹看做最終結果的話,那么加工商品前的各種零部件就可以看做數據源,而中間一系列的...
閱讀 2628·2021-11-25 09:43
閱讀 2731·2021-11-04 16:09
閱讀 1645·2021-10-12 10:13
閱讀 886·2021-09-29 09:35
閱讀 884·2021-08-03 14:03
閱讀 1779·2019-08-30 15:55
閱讀 2994·2019-08-28 18:14
閱讀 3495·2019-08-26 13:43