Java 8 – Date API的新增功能
隨著Java 8最終版本的發布,令我興奮的新功能之一就是新的Date API,這是JSR 310的工作成果。 盡管Lambda表達式無疑是Java 8的一大亮點,但是擁有更好的日期處理方式無疑是受歡迎的。 這是一篇簡短的文章(第2部分或第3部分的第1部分),展示了新的Date功能的一些要點,這次主要圍繞LocalDate類。
創建新的日期對象
創建代表特定日期的新Date對象很容易:
添加到日期
作為我們在Java 8中輕松處理日期的簡單示例,請考慮需要在現有日期中添加天,月或年的情況。 有方法LocalDate.plusDays , LocalDate.plusWeeks , LocalDate.plusMonths LocalDate.plusYears 。 還有一個通用的LocalDate.plus方法,您可以在其中通過TemporalUnit類型指定要添加的數量和時間單位。 這里有一些例子:
@Testpublic void test_add_to_date() {LocalDate oneMonthFromNow = today.plusDays(30);assertTrue(oneMonthFromNow.isEqual(LocalDate.parse("2014-03-29")));LocalDate nextMonth = today.plusMonths(1);assertTrue(nextMonth.isEqual(LocalDate.parse("2014-03-27")));LocalDate future = today.plus(4, ChronoUnit.WEEKS);assertTrue(future.isEqual(LocalDate.parse("2014-03-27")));}減去日期
要從日期減去天,周,月或年,可以使用預期的方法: LocalDate.minusDays , LocalDate.minusMonths等。以下是從日期減去的一些示例:
@Testpublic void test_subtract_from_date() {assertThat(today.minusWeeks(1).toString(), is("2014-02-20"));assertThat(today.minusMonths(2).toString(), is("2013-12-27"));assertThat(today.minusYears(4).toString(), is("2010-02-27"));Period twoMonths = Period.ofMonths(2);assertThat(today.minus(twoMonths).toString(), is("2013-12-27"));}在此示例中,我們還介紹了Period對象。
確定日期之間的差異
可以爭辯說,獲取兩個日期之間的差異是處理Java 8之前的日期最痛苦的操作。新的Date API使使用LocalDate.until同樣容易地確定日期之間的天數,周數,月數或年數。方法:
@Testpublic void test_get_days_between_dates() {LocalDate vacationStart = LocalDate.parse("2014-07-04");Period timeUntilVacation = today.until(vacationStart);assertThat(timeUntilVacation.getMonths(), is(4));assertThat(timeUntilVacation.getDays(), is(7));assertThat(today.until(vacationStart, ChronoUnit.DAYS), is(127L));LocalDate libraryBookDue = LocalDate.parse("2000-03-18");assertThat(today.until(libraryBookDue).isNegative(), is(true));assertThat(today.until(libraryBookDue, ChronoUnit.DAYS), is(-5094L));LocalDate christmas = LocalDate.parse("2014-12-25");assertThat(today.until(christmas, ChronoUnit.DAYS), is(301L));}在此示例中,我們再次看到了Period對象的使用。
結論
我們結束了對LocalDate和Java 8 Date API的快速瀏覽。 顯然,在Java 8中使用日期和時間還有很多發現,本文只是快速的介紹。 謝謝你的時間。
資源資源
- Joda Time Java日期時間庫,用于Java版本<8
- java.time包包含本文中討論的類的Java文檔。
- Java 8中的函數式編程是使用Java 8中新功能組件的重要資源
- 這篇文章的源代碼
翻譯自: https://www.javacodegeeks.com/2014/03/whats-new-in-java-8-date-api.html
總結
以上是生活随笔為你收集整理的Java 8 – Date API的新增功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 拆家是什么意思 拆家解释
- 下一篇: 合成和桥接方法