讀Java實戰(第二版)筆記06_新的日期和時間API

来源:https://www.cnblogs.com/lying7/archive/2023/02/10/17107474.html
-Advertisement-
Play Games

在19年11月的時候買了一個運動手環,然後時不時會用它來記錄睡眠數據;積累到現在已經有40個月了。現在想要調整作息,分析一下這些數據,來制定合理的作息計劃。 圖1 月平均入睡時間 從圖1可以看出,我最經常的入睡時間是(02:00:00~02:10:00)之間; 現在我想要早睡,逐步調整,第一個目標值 ...


1. Java 8之前的庫對日期和時間的支持非常不理想

2. TemporalField介面

2.1. 定義瞭如何訪問temporal對象某個欄位的值的介面

2.2. ChronoField枚舉

2.2.1. 實現TemporalField介面

3. LocalDate類

3.1. 實例是一個不可變對象

3.2. 只提供了簡單的日期

3.3. 不含當天的時間信息

3.4. 不附帶任何與時區相關的信息

3.5. LocalDate.of

3.5.1. 靜態工廠方法of創建一個LocalDate實例

3.6. LocalDate.now()

3.6.1. 從系統時鐘中獲取當前的日期

3.7. LocalDate.parse

3.7.1. 通過解析代表日期的字元串創建

3.8. getYear()

3.9. getMonthValue()

3.10. getDayOfMonth()

3.11. 建議使用

4. ChronoLocalDate介面

4.1. 儘量避免使用

4.1.1. 開發者的代碼中會做一些假設

4.1.2. 這些假設在不同的日曆系統中,有可能不成立

4.2. 將程式的輸入或者輸出本地化時使用

5. 曆法系統

5.1. ISO-8601的曆法系統

5.1.1. 世界文明日曆系統的事實標準

5.2. ThaiBuddhistDate

5.3. MinguoDate

5.4. JapaneseDate

5.5. HijrahDate

5.5.1. 伊斯蘭教日曆

5.5.2. 最複雜

5.5.3. 烏姆庫拉(Umm Al-Qura)變數

5.5.4. 只能首先可見於沙烏地阿拉伯

6. LocalTime類

6.1. LocalTime.of

6.1.1. 靜態工廠方法of創建一個LocalTime實例

6.2. LocalTime.parse

6.2.1. 通過解析代表時間的字元串創建

6.3. getHour()

6.4. getMinute()

6.5. getSecond()

7. DateTimeFormatter類

7.1. 實例定義瞭如何格式化一個日期或者時間對象

7.2. 字元串參數無法被解析為合法的LocalDate或LocalTime對象

7.2.1. DateTimeParseException異常

8. LocalDateTime類

8.1. LocalDate和LocalTime的合體

8.2. 同時表示了日期和時間

8.3. 不帶有時區信息

8.4. toLocalDate

8.4.1. 從LocalDateTime中提取LocalDate

8.5. toLocalTime

8.5.1. 從LocalDateTime中提取LocalTime

8.6. atTime

8.6.1. 向LocalDate傳遞一個時間對象

8.7. atDate

8.7.1. 向LocalTime傳遞一個日期對象的方式

9. Instant類

9.1. java.time.Instant類

9.2. 機器的日期和時間格式

9.2.1. 為了便於機器使用

9.2.2. 由秒及納秒所構成的數字

9.2.3. 無法處理時間單位

9.3. 以Unix元年時間(傳統的設定為UTC時區1970年1月1日午夜時分)開始所經歷的秒數進行計算

9.4. Instant.ofEpochSecond

9.4.1. 單參數

9.4.1.1. 傳遞代表秒數的值創建一個該類的實例

9.4.2. 雙參數

9.4.2.1. 接受第二個以納秒為單位的參數值

9.4.2.2. 對傳入作為秒數的參數進行調整

9.4.2.3. 納秒分片在0到999999999之間

9.5. Instant.now()

9.5.1. 獲取當前時刻的時間戳

9.6. Instant.fromInstant()

9.7. toInstant()

9.8. 棄用API跟新的日期和時間API之間執行互操作

10. Duration類

10.1. 主要用於以秒和納秒衡量時間的長短

10.2. 不能僅向between方法傳遞一個LocalDate對象做參數

10.3. Duration.between

10.4. 對象都是不可修改的

10.5. 以兩個temporal對象的差值的方式來定義它們的對象

11. Period類

11.1. Period.between

11.1.1. 得到兩個LocalDate之間的時長

11.2. 對象都是不可修改的

11.3. 以兩個temporal對象的差值的方式來定義它們的對象

12. 表示時間間隔的通用方法

12.1. 

13. 表示時間點的通用方法

13.1. 

14. TemporalAdjusters類

14.1. 方法名基本就是問題陳述

14.2. 可以進行更加複雜的日期操作

14.2.1. 不再局限於一次只能改變它的一個值,並且你還可按照需求定義自己的日期轉換器

14.3. TemporalAdjusters.ofDateAdjuster

14.3.1. 使用Lambda表達式定義TemporalAdjuster對象

14.3.2. 接受一個UnaryOperator類型的參數

14.4.

15. DateTimeFormatter類

15.1. java.time.format包

15.2. 線程安全

15.3. DateTimeFormatter.BASIC_ISO_DATE

15.3.1. 20230202

15.4. DateTimeFormatter.ISO_LOCAL_DATE

15.4.1. 2023-02-02

15.5. DateTimeFormatter.ofPattern

15.5.1. 單參數

15.5.2. 雙參數

15.5.2.1. 第二參數Locale的格式器

16. DateTimeFormatterBuilder類

16.1. 區分大小寫的解析

16.2. 柔性解析

16.2.1. 允許解析器使用啟髮式的機制去解析輸入

16.2.2. 不精確地匹配指定的模式

16.3. 填充

16.4. 在格式器中指定可選節

17. ZoneId類

17.1. java.time.ZoneId

17.2. 無法修改的

17.3. 時區處理

17.4. ZoneId.of

17.5. toZoneId()

17.6. 

18. ZoneOffset類

18.1. ZoneId的一個子類

18.2. 當前時間和倫敦格林尼治子午線時間的差異

18.3. 偏差實際上對應的是美國東部標準時間

18.4. 並未考慮任何夏令時的影響

18.5. 大多數情況下,不推薦使用


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 源碼下載地址 https://github.com/Aizhuxueliang/springboot_shiro.git 前提你電腦的安裝好這些工具:jdk8、idea、maven、git、mysql; shiro的主要概念 Shiro是一個強大的簡單易用的Java安全框架,主要用來更便捷的認證、授 ...
  • 有多種實現方式: 一、使用 Set 對象: Array.from(new Set(array)) 該方法會先創建一個 Set 對象,然後再使用 Array.from 方法將 Set 對象轉換為數組,因為 Set 對象不允許有重覆的元素,所以這樣可以實現去重的效果。 但是,如果數組中的元素是對象,Se ...
  • Web一階段面試題 1.簡述 <!doctype> 的作用? <!DOCTYPE> 聲明叫做文檔類型定義(DTD),聲明的作用是為了告訴瀏覽器該文件的類型。讓瀏覽器解析器知道應該用哪個規範來解析文檔。 五大主流的瀏覽器及其內核? Chrome 內核 Blink Safari 內核 Webkit Op ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 項目效果 我們今天要實現的是一個路徑規劃的功能,有兩個輸入框。輸入起點終點,然後查詢,得到規劃的路徑,效果如下: 我們會用到以下庫: Axios:用於發送請求,請求高德地圖的地理編碼API Jquery:也用於發送請求 Cesium:地圖 ...
  • 上文創建了一堆 utils、component-info,並實現了新組件模塊相關目錄和文件的創建。本文繼續實現後面的內容。 1 組件樣式文件並導入 在 src/service 目錄中創建 init-scss.ts 文件,該文件導出 initScss 函數。 由於 .vue 類型的組件的樣式就直接寫在 ...
  • JavaScript 詞法環境 本文主要講解JS詞法環境,我們將看到什麼是詞法環境,詞法範圍如何工作,函數內部的名稱如何解析,內部屬性,弄清楚詞法環境利於我們理解閉包。讓我們開始吧... 什麼是詞法環境? 在理解閉包時,最大的混淆來源是術語“辭彙環境”,或者只是“辭彙”這個詞。在電腦科學中術語“詞 ...
  • 演示代碼使用 Vue3 + ts + Vite 編寫,但是也會列出適用於 Vue2 的優化技巧,如果某個優化只適用於 Vue3 或者 Vue2,我會在標題中標出來。 代碼優化 v-for 中使用 key 使用 v-for 更新已經渲染的元素列表時,預設用就地復用策略;列表數據修改的時候,他會根據 k ...
  • 一、使用 performance.now() API 在 JavaScript 中,可以使用 performance.now() API 來評測代碼的運行速度。該 API 返回當前頁面的高精度時間戳,您可以在代碼執行前後調用它來計算代碼執行所需的時間。 例如: let t0 = performanc ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...